【问题标题】:Compile C code for Windows 64 [closed]为 Windows 64 编译 C 代码 [关闭]
【发布时间】:2011-05-12 13:30:30
【问题描述】:

多年来我没有接触过 C,但需要为 Windows 7 64 编译一些 C 源代码。源代码带有一个 makefile。有人可以推荐一个带有make的C编译器吗?

PS:

制作文件:

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:

【问题讨论】:

  • 我喜欢GnuWin32。您可以将其make 与任何编译器一起使用。

标签: c makefile


【解决方案1】:

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

    1234563运行nmake。您需要修改 makefile 以调用 cl 和 link。
  1. 如果 Makefile 是 MinGW makefile,您将需要 mingw-w64's toolchains targetting Win64(注意还提供 32 位工具链)。我推荐official builds provided through an installer 或可从 MSYS2 安装的那些(见第 3 点)。安装,打开 MinGW-w64 命令提示符,cd 到你的项目目录,然后运行 ​​mingw32-make

  2. 如果 Makefile 是 Unix/MSYS makefile,我建议使用MSYS2。您可以使用上述工具链,或执行pacman -S mingw-w64-x86_64-gcc 从 MSYS2 shell 安装工具链。请务必将/mingw64/bin 添加到PATH 或从“MSYS2 MinGW-w64 64-bit”快捷方式启动以使用它。请注意,您只能将 MSYS2 用作包管理工具:安装您想要的任何依赖项(有大量可供使用的第 3 方库二进制文件),只需将 <MSYS2 root>/mingw64/bin 目录添加到 PATH 并从任何地方调用编译器。

  3. 如果项目使用 Unix 功能(如 fork() 或其他 Unix 系统调用),您可以使用 64 位 Cygwin,安装其编译器,并与 Cygwin dll 链接。不建议这样做,因为存在性能(嗯,相对于将代码移植到 Win32 API)和许可损失(Cygwin DLL 是 GPL,这会强制您的程序以与 GPL 兼容的方式获得许可)。

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

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

  2. 从他们的Education offerings website 下载英特尔编译器。从第 5 点开始需要 Visual Studio Professional。不过,您需要修改 Makefile 以使用 Intel 编译器。

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

我知道这超出了您的要求,但我的高评价答案需要完整,对吧?

【讨论】:

  • 谢谢。我已经添加了 make 文件(见 PS)。鉴于此,您的哪一点适用?谢谢!
  • 我会尝试 MSYS 之一(3 号)。有sedcsh。第一个在我链接的MSYS包里,第二个不知道,看看试试。
  • 谢谢。我设置了路径但得到:“make [1]:cc:找不到命令”。 mingw 确实带有 gcc 我必须编辑一些东西吗?一些 linux 网站写道,只有在没有 gcc 的情况下才使用 cc ......有什么想法吗?谢谢。
  • 您将需要编辑您的makefile,以便CC="gcc -Wall" 并希望它有效。您可能必须将 csh 重命名为 shbash,但我不知道这是否有必要,或者即使您替换它也会起作用。
  • @rubenvb 很好的答案。请您澄清一下:“安装,打开 MinGW-w64 命令提示符,cd 到您的项目目录,然后运行 ​​mingw32-make。”这是否会生成 64 位可执行文件?如果没有,是否有mingw64-make 或类似名称?
【解决方案2】:

您可以使用 Visual C 并查看 nmake

见:How to use makefiles in Visual Studio?

【讨论】:

    【解决方案3】:

    您可以尝试MinGW 来获得类似于 GCC 的 makefile。

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        Code::Blocks 带有一个内置的 Mingw 环境,它应该可以很好地处理 makefile。

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 2014-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-01
          • 1970-01-01
          相关资源
          最近更新 更多