2011-05-12 144 views
6

我已經多年沒有碰過C了,但需要編譯Windows 7 64的一些C源代碼。源文件帶有一個makefile。有人可以推薦使用make的C編譯器嗎?編譯用於Windows 64的C代碼

PS:

make文件:

POSTFIX="_amd64" 
CC = CC="cc -Wall" 
RANLIB=RANLIB="ranlib" 
INSTALLDIR=/usr/local/bin 
LIBINSTALLDIR=/usr/local/lib 

VERSION=4.12 
DATE=10/10/10 

PROGRAMS=bib2xml ris2xml end2xml endx2xml med2xml isi2xml copac2xml \ 
    biblatex2xml ebi2xml wordbib2xml \ 
    xml2ads xml2bib xml2end xml2isi xml2ris xml2wordbib modsclean 

all : FORCE 
    cd lib; make -k $(CC) -k $(RANLIB); cd .. 
    cd bin; make -k $(CC) -k VERSION="$(VERSION)" -k DATE="$(DATE)"; cd .. 

clean: FORCE 
    cd lib  ; make clean ; cd .. 
    cd bin  ; make clean ; cd .. 
    cd test ; make clean ; cd .. 

realclean: FORCE 
    cd lib  ; make realclean ; cd .. 
    cd bin  ; make realclean ; cd .. 
    cd test ; make realclean ; cd .. 
    rm -rf update lib/bibutils.pc 

test: all FORCE 
    cd lib ; make test; cd .. 
    cd bin ; make test; cd .. 

install: all FORCE 
    cd lib ; make -k LIBINSTALLDIR=$(LIBINSTALLDIR) install; cd .. 
    sed 's/VERSION/${VERSION}/g' packageconfig_start > lib/bibutils.pc 
    @for p in ${PROGRAMS}; \ 
     do (cp bin/$$p ${INSTALLDIR}/$$p); \ 
    done 

package: all FORCE 
    csh -f maketgz.csh ${VERSION} ${POSTFIX} 

deb: all FORCE 
    csh -f makedeb.csh ${VERSION} ${POSTFIX} 

FORCE: 
+0

我喜歡[GnuWin32](http://gnuwin32.sourceforge.net/)。你可以在任何編譯器中使用它的'make'。 – pmg 2011-05-12 13:43:05

回答

12

因爲這裏的每一個人無視你清晰的64位發言,我會給出一個正確的答案:

  1. 如果makefile文件是一個NMAKE生成文件,您可以安裝Visual Studio Express for Windows Desktop,打開命令提示符從開始菜單(選擇一個目標64位Windows),cd到您的項目目錄,然後運行nmake。你需要修改makefile來調用cl和鏈接。

  2. 如果Makefile是一個MinGW生成文件,您將需要mingw-w64's toolchains targetting Win64(注意還提供了32位工具鏈)。我建議使用official builds provided through an installer或可從MSYS2安裝的軟件(請參見第3點)。安裝,打開MinGW-w64命令提示符,cd到您的項目目錄,然後運行mingw32-make

  3. 如果Makefile是Unix/MSYS makefile,我建議使用MSYS2。您可以使用上述工具鏈,或者使用pacman -S mingw-w64-x86_64-gcc從MSYS2 shell安裝工具鏈。請務必將/mingw64/bin添加到PATH或從「MSYS2 MinGW-w64 64位」快捷方式啓動以使用它。注意,你可以只使用MSYS2作爲包管理工具:安裝你想要的任何依賴項(有大量第三方庫二進制文件可供使用),只需將<MSYS2 root>/mingw64/bin目錄添加到PATH並從任何地方調用編譯器即可。

  4. 如果項目使用Unix功能(如fork()或其他Unix系統調用),您可以使用64位Cygwin,安裝其編譯器,並鏈接到Cygwin DLL。這是不推薦的,因爲它具有性能(當然,相對於將代碼移植到Win32 API中)和許可證處罰(Cygwin DLL是GPL,這會強制您的程序以GPL兼容方式獲得許可)。

這些是用免費工具編譯64位Windows的C源文件的四種方法。如果你是學生,你也許可以使用下面的方法,以及:

Dreamspark
  • 下載Visual Studio專業(如果你的大學/學院/學校已與微軟達成協議這個)並使用它。除非你使用諸如MFC/ATL和/或VS插件之類的東西,它們在快速版本中不起作用,這幾乎等同於第1點。

  • 從他們的Education offerings website下載英特爾編譯器。需要從第5點開始的Visual Studio Professional。您需要修改Makefile以使用Intel編譯器。

  • here(Windows快照構建)下載LLVM/Clang編譯器,並將其與第5點一起使用。您需要修改makefile以調用clang。

  • 我知道這比你要求的要多,但是我的高分答案需要完整,對嗎?

    +0

    謝謝你。我已經添加了make文件(參見PS)。鑑於你的觀點適用於哪些?謝謝! – cs0815 2011-05-13 11:20:11

    +0

    我想試試MSYS之一(編號3)。有'sed'和'csh'。首先是在我連接的MSYS包中,第二個我不知道,請參閱並嘗試。 – rubenvb 2011-05-13 16:55:48

    +0

    謝謝。我設置了路徑,但得到:「make [1]:cc:Command not found」。 mingw與gcc一起來做我必須編輯的東西。一些linux網站寫道,只有在沒有gcc的情況下才會使用cc ...任何想法?謝謝。 – cs0815 2011-05-16 08:45:07

    1

    你可以嘗試MinGW有類似的makefile GCC的。

    1

    Code::Blocks帶有一個內置的MinGW環境,應處理makefile文件就好了。