Review:在windows下編譯C的四種方法


原文:https://nullprogram.com/blog/2016/06/13/

 這篇文章主要介紹的是如何在windows下構建可以跨平台的C語言程序的問題,作者提供了四種可以選擇的方法,並指出每種方法的特點和存在的缺陷。

由於在windows下只支持通過Visual C++進行C/C++的開發,所以要實現跨平台的應用有很大的麻煩。最大的一個問題是windows的C函數庫被規定為只能接受Uicode(UTF-16)或者ANSI字符串。所以一般的windo函數會提供兩個版本,funcW()和funcA(),分別對應兩種字符集,但其實funcA最終也是將ANSI字符串先轉換為Unicode。

四種構建的方法:

1、Mingw-w64

mingw是gcc在windows的移植版本,可以使用很多gcc的特性,以及C11的所有核心語言特性。使用Mingw,建議在cywin環境下使用,因為它提供了一個完整的POSIX線程環境。
Mingw有個最大的缺陷。windows不支持標准的C語言庫。mingw-w64只能以msvcrt.dll來代替,但它並不是被MS官方支持的,只不過碰巧遺留在windows的安裝中。所以只能支持C89的標准,C99和C11都無法支持。

2、Visual C++

Visual C++的編譯器和構建工具可以獨立於整個IDE使用。在執行構建前先執行vcvars64.bat加載環境變量,就可以使用編譯器(cl.exe),鏈接器(link.exe),匯編器(ml64.exe),反匯編(dumpbin.exe),還有一個make工具nmake.exe。
不足之處:需要用好長時間去安裝並不需要的Visual Stdio環境。另外,MS只關注C++,對於C99,MS還沒考慮支持。另外,makefile的語法也與一般unix環境下的不一致。debug也是個問題,Visual C++輸出的是.pdb的帶調試信息文件,無法被gdb識別,而且除了IDE環境,也沒有一個獨立的調試工具。

3、CLang

CLang類似mingw,被移植到windows下,它直接依賴於windows的SDK,所以首先要安裝Visual C++的構建工具集。所以CLang無法做到可移植,但可以生成gdb友好的調試信息,理論上可以使用gdb進行調試。

4、Pelles C

 免費但不開源,是一個完整的IDE,包括了調試器和命令行工具。具有自己的C函數庫,支持win32 SDK。Pelles C只能在windows下使用,不具有可移植性,且調試信息也不支持GDB。Pelles C使用的是自己的編譯器,代碼的性能比其他的工具都差一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM