为Windows 64编译C代码

为Windows 64编译C代码,c,makefile,C,Makefile,我已经多年没有接触过C了,但需要为Windows764编译一些C源代码。源代码附带一个makefile。有人能推荐一个带make的C编译器吗 附言: 生成文件: 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 e

我已经多年没有接触过C了,但需要为Windows764编译一些C源代码。源代码附带一个makefile。有人能推荐一个带make的C编译器吗

附言:

生成文件:

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:

您可以使用visualc并查看nmake


请参阅:

您可以尝试使用类似于GCC的makefiles。

请看一看内置的Mingw环境,它可以很好地处理makefiles。

因为这里的每个人都不知道您清晰的64位语句,我将给出一个正确的答案:

  • 如果makefile是Nmake makefile,则可以安装,从“开始”菜单(选择针对64位窗口的菜单)打开命令提示符,
    cd
    到项目目录,然后运行
    Nmake
    。您需要修改makefile以调用cl和link

  • 如果Makefile是MinGW Makefile,则需要(注意,还提供了32位工具链)。我建议使用或可从MSYS2安装的(参见第3点)。安装,打开MinGW-w64命令提示符,
    cd
    到项目目录,然后运行
    mingw32 make

  • 如果Makefile是Unix/MSYS Makefile,我建议使用。您可以使用上面的工具链,或者使用pacman-S mingw-w64-x86_64-gcc从MSYS2 shell安装工具链。确保将
    /mingw64/bin
    添加到
    路径
    ,或从“MSYS2 MinGW-w64 64位”快捷方式启动以使用它。注意:您只能将MSYS2用作包管理工具:安装所需的任何依赖项(有大量第三方库二进制文件可供使用),只需将
    /mingw64/bin
    目录添加到
    路径
    ,并从任何位置调用编译器即可

  • 如果项目使用Unix功能(如
    fork()
    或其他Unix系统调用),则可以使用64位,安装其编译器,并与Cygwin dll链接。这是不推荐的,因为存在性能(相对于将代码移植到Win32 API而言)和许可惩罚(Cygwin DLL是GPL,它强制您的程序以GPL兼容的方式获得许可)

  • 以下是使用免费工具为64位Windows编译C源文件的四种方法。如果您是一名学生,您可能还可以使用以下方法:

  • 从下载Visual Studio Professional(如果您的大学/学院/学校与Microsoft就此达成协议),并使用该软件。除了使用MFC/ATL和/或VS插件(在express版本中不起作用)之外,与第1点基本相同

  • 从他们的网站下载英特尔编译器。但从第5点开始需要Visual Studio专业人员。不过,您需要修改生成文件以使用英特尔编译器

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


  • 我知道这比你要求的要多,但我的高评分答案需要完整,对吗?

    我喜欢。您可以在任何编译器中使用它的
    make
    。谢谢。我已经添加了make文件(参见PS)。鉴于此,你的哪一点适用?谢谢我想试试MSYS的(3号)。有
    sed
    csh
    。第一个在我链接的MSYS包中,第二个我不知道,请查看并尝试。谢谢。我设置了路径,但得到:“make[1]:cc:Command-notfound”。mingw确实附带gcc,我必须编辑一些东西。一些linux站点写道,只有在没有gcc的情况下才使用cc。。。有什么想法吗?谢谢。您需要编辑您的makefile,以便
    CC=“gcc-Wall”
    ,并希望它能正常工作。您可能必须将
    csh
    重命名为
    sh
    bash
    ,但我不知道这是否必要,或者即使您将其替换,也不会起作用。@rubenvb回答得很好。请您澄清一下:“安装,打开MinGW-w64命令提示符,将cd刻录到您的项目目录,然后运行mingw32-make。”这是否会生成64位可执行文件?如果没有,是否有
    mingw64品牌
    或类似品牌?