编译Windows 64的C代码

时间:2011-05-12 13:30:31

标签: c makefile

我多年没碰过C了,但需要为Windows 7 64编译一些C源代码。源代码附带一个makefile。有人可以推荐一个带有make的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:

5 个答案:

答案 0 :(得分:13)

由于这里的每个人都没有注意到你明确的64位陈述,我会给出正确答案:

  1. 如果makefile是Nmake makefile,则可以安装Visual Studio Express for Windows Desktop,从开始菜单中选择一个命令提示符(选择一个目标64位Windows),cd到你的项目的目录,然后运行nmake。您需要修改makefile以调用cl和link。

  2. 如果Makefile是MinGW makefile,则需要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兼容的方式获得许可)。

  5. 这些是使用免费工具为64位Windows编译C源文件的四种方法。如果您是学生,您也可以使用以下方式:

    1. Dreamspark下载Visual Studio Professional(如果您的大学/学院/学校与Microsoft就此达成协议)并使用它。几乎与第1点相当,除非您使用MFC / ATL和/或VS插件之类的东西,这些东西在快递版本中不起作用。

    2. Education offerings website下载英特尔编译器。但是从第5点开始需要Visual Studio Professional。您需要修改Makefile以使用英特尔编译器。

    3. here(Windows快照版本)下载LLVM / Clang编译器,并将其与第5点结合使用。您需要修改makefile以调用clang。

      < / LI>

      我知道这不仅仅是你要求的,但我的高评价答案需要完整,对吗?

答案 1 :(得分:1)

您可以使用Visual C并查看nmake

请参阅:How to use makefiles in Visual Studio?

答案 2 :(得分:1)

您可以尝试MinGW使makefile与GCC类似。

答案 3 :(得分:1)

答案 4 :(得分:1)

Code::Blocks内置了Mingw环境,可以处理makefile。