【问题标题】:How do I alias i686-w64-mingw32-gcc-4.5.3.exe to gcc under cygwin?如何在cygwin下将i686-w64-mingw32-gcc-4.5.3.exe别名为gcc?
【发布时间】:2012-08-13 06:20:52
【问题描述】:

我现在在 cygwin 中安装了两个 gcc:i686-w64-mingw32-gcc-4.5.3.exe 和 cygwin gcc。为了清楚起见,我将向您展示我所做的:

$ ls -al /usr/bin/gcc* lrwxrwxrwx 1 用户无 21 Aug 16 13:15 /usr/bin/gcc.exe -> /etc/alternatives/gcc -rwxr-xr-x 2 用户无 94741 2009 年 2 月 25 日 /usr/bin/gcc-3.exe $ ls -al /etc/alternatives/gcc* lrwxrwxrwx 1 用户无 16 年 8 月 18 日 13:15 /etc/alternatives/gcc -> /usr/bin/gcc-3.exe $ rm /etc/alternatives/gcc $ ln -S /usr/bin/i686-w64-mingw32-gcc-4.5.3.exe /etc/alternatives/gcc $ gcc -v 使用内置规范。 COLLECT_GCC=gcc 目标:i686-w64-mingw32 配置为:/cygdrive/i/szsz/tmpp/32gcc/mingw64-i686-gcc-4.5.3-6/src/gcc-4.5.3/configure --srcdir=/cygdrive/i/szsz/tmpp/32gcc/ mingw64-i686-gcc-4.5.3-6/src/gcc-4.5.3 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin - -libexecdir=/usr/lib --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --datarootdir=/usr/share --docdir=/usr/share/doc/mingw64-i686- gcc -C --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-w64-mingw32 --with-sysroot=/usr/i686-w64-mingw32/sys-root -- with-build-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry --enable-languages=c,ada,c++,fortran,objc,obj-c++ - -enable-fully-dynamic-string --enable-libgomp --enable-sjlj-exceptions --enable-version-specific-runtime-libs --with-dwarf2 --enable-decimal-float=bid --enable-lto 线程型号:win32 gcc 版本 4.5.3 (GCC) $ gcc -o 测试 test.c gcc:尝试执行“cc1”时出错:execvp:没有这样的文件或目录 $ /usr/bin/i686-w64-mingw32-gcc.exe -o test test.c $

如何让 gcc 工作?

【问题讨论】:

    标签: gcc cygwin mingw


    【解决方案1】:

    我认为您需要更改 /usr/bin 中的 gcc 符号链接以指向您正确版本的 GCC。或者,您可以编辑您的 PATH 以使 /etc/alternatives 位于 /usr/bin 之前,但这可能会产生意想不到的副作用,具体取决于您的设置。

    【讨论】:

    • 如果你所说的情况是gcc -v 不会产生mingw 版本信息。
    【解决方案2】:

    如果您需要本机 MinGW-w64 GCC,请使用本机 Windows 版本的编译器并从 cmd 调用它,或者如果您必须使用 MSYS。如果没有,请使用 Cygwin 到 Windows 交叉编译器并将前缀编码到 Makefile/CMakeLists.txt/configure 脚本中。

    请记住 Cygwin != Windows,而您正在做的是交叉编译,在 GCC 领域是通过调用前缀二进制文件来完成的。

    【讨论】:

    • 一般来说你是对的,但是在这种情况下,mingw-w64 是一个原生的 windows 编译器。
    • @chacham15 原生 MinGW-w64 编译器无法在 cygwin 下运行。如果你安装了 Cygwin MinGW-w64 GCC 包,你就有了一个 Cygwin 到 Windows 的交叉编译器。毫无疑问。如果您使用的是 Cygwin 的本机 MinGW-w64,请不要。
    • 为什么说它是交叉编译器呢?整个mingw系列编译器(即以mingw为前缀的编译器)都是本机Windows编译器。请参阅:mingw-w64.sourceforge.net 作为附加测试,我可以从 cmd 调用编译器并且它工作正常(假设我使用正确的名称)
    • @chacham15 大多数二进制文件都不能在 cygwin 下运行,cygwin 有自己的 mingw-w64-gcc 构建。当然,您可以使用 Windows 本机 gcc,但这不是您的问题所在。如果你从 cygwin 调用 i686-w64-mingw32-gcc,最好​​编译成在 cygwin 上运行,而不是 windows。
    • 这没有回答问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多