如何在cygwin下将i686-w64-mingw32-gcc-4.5.3.exe别名为gcc?

如何在cygwin下将i686-w64-mingw32-gcc-4.5.3.exe别名为gcc?,gcc,cygwin,mingw,Gcc,Cygwin,Mingw,我现在在cygwin中安装了两个gcc:i686-w64-mingw32-gcc-4.5.3.exe和cygwin gcc。为了清楚起见,我将向您展示我所做的: $ ls -al /usr/bin/gcc* lrwxrwxrwx 1 User None 21 Aug 16 13:15 /usr/bin/gcc.exe -> /etc/alternatives/gcc -rwxr-xr-x 2 User None 94741 Feb 25 2009 /usr/bin/gcc-3.exe

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

$ ls -al /usr/bin/gcc* lrwxrwxrwx 1 User None 21 Aug 16 13:15 /usr/bin/gcc.exe -> /etc/alternatives/gcc -rwxr-xr-x 2 User None 94741 Feb 25 2009 /usr/bin/gcc-3.exe $ ls -al /etc/alternatives/gcc* lrwxrwxrwx 1 User None 18 Aug 16 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 Using built-in specs. COLLECT_GCC=gcc Target: i686-w64-mingw32 Configured with: /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 Thread model: win32 gcc version 4.5.3 (GCC) $ gcc -o test test.c gcc: error trying to exec 'cc1': execvp: No such file or directory $ /usr/bin/i686-w64-mingw32-gcc.exe -o test test.c $ $ls-al/usr/bin/gcc* LRWXRWX 1用户无21 Aug 16 13:15/usr/bin/gcc.exe->/etc/alternations/gcc -rwxr-xr-x 2用户无94741 2009年2月25日/usr/bin/gcc-3.exe $ls-al/etc/备选方案/gcc* LRWXRWX 1用户无18 Aug 16 13:15/etc/alternations/gcc->/usr/bin/gcc-3.exe $rm/etc/备选方案/gcc $ln-S/usr/bin/i686-w64-mingw32-gcc-4.5.3.exe/etc/alternations/gcc $gcc-v 使用内置规格。 收集\u 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-prefix=/usr--exec-prefix=/usr--bindir=/usr/bin--sbindir=/usr/sbin--libexecdir=/usr/lib datadir=/datadir=/localconfr=/usr=/rootdir=/stateshar=/usr=/sysdir=/usr=/source=/usr=/res=/usr--sear--search=--DOCDIR=/Urs/St/DoW64-I66GCC—C = Bug=I68 6PC PC CGWIN——目标=I68—W64-MIW32——带有SysRooSt/Ur/I66W64-MIWW32/Syroot——用构建SysRooSt//Ur/I66W64-MIWW32/Syroot——禁用多功能- DeababyWi32-Reals-AdveloList= C、艾达、C++、FORTRAN、Objc,obj-c++--启用完全动态字符串--启用libgomp--启用sjlj异常--启用特定于版本的运行时libs--使用-dwarf2--启用十进制浮点=bid--启用lto 线程模型:win32 gcc版本4.5.3(gcc) $gcc-o test.c gcc:尝试执行“cc1”时出错:execvp:没有这样的文件或目录 $/usr/bin/i686-w64-mingw32-gcc.exe-o test.c $
如何使gcc工作?

我认为您需要更改
/usr/bin
中的gcc符号链接,以指向正确的gcc版本。或者,您可以编辑您的
路径
,使
/etc/alternations
出现在
/usr/bin
之前,但这可能会产生意外的副作用,具体取决于您的设置。

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


记住Cygwin!=Windows,您所做的是交叉编译,在GCC land中,交叉编译是通过调用带前缀的二进制文件来完成的。

如果您所说的是case
GCC-v
,则不会生成mingw版本信息。但是,在这种情况下,您通常是正确的,mingw-w64是本机windows编译器。@chacham15本机mingw-w64编译器不能在cygwin下工作。如果您安装了Cygwin MinGW-w64 GCC软件包,那么您就有一个Cygwin-to-Windows交叉编译器。毫无疑问。如果您使用的是Cygwin的本机MinGW-w64,请不要这样做。为什么您会说它是一个交叉编译器?整个mingw系列编译器(即前缀为mingw的编译器)都是本机windows编译器。请参阅:作为一个附加测试,我可以从cmd调用编译器,它工作正常(假设我使用正确的名称)@chacham15大多数二进制文件都不是在cygwin下运行的,cygwin有自己的mingw-w64-gcc版本。当然,您可以使用windows本机gcc,但这不是您的问题所在。如果您从cygwin调用i686-w64-mingw32-gcc,那么最好将其编译为在cygwin上运行,而不是在windows上运行。这并不能回答问题。