2012-08-16 74 views
0

我现在有两个gcc安装在cygwin中:i686-w64-mingw32-gcc-4.5.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 

$ 

如何让gcc工作?

回答

-3

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

记住Cygwin!= Windows,你正在做的是交叉编译,它在GCC中是通过调用前缀二进制文件完成的。

+0

一般而言,你是正确的,但在这种情况下,mingw-w64是一个本地windows编译器。 – chacham15 2012-08-17 15:55:23

+0

@ chacham15本地的MinGW-w64编译器在cygwin下无法运行。如果您安装了Cygwin MinGW-w64 GCC软件包,则可以使用Cygwin to Windows交叉编译器。毫无疑问。如果您使用Cygwin的本地MinGW-w64,则不要。 – rubenvb 2012-08-17 16:59:54

+0

你为什么会说它是一个交叉编译器?整个mingw系列编译器(即以mingw为前缀的编译器)都是本机窗口编译器。看到:http://mingw-w64.sourceforge.net/作为一个额外的测试,我可以从cmd调用编译器,它工作正常(假设我使用正确的名称) – chacham15 2012-08-17 17:20:25

-1

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

+0

如果你的意思是'gcc -v'不会产生mingw版本信息。 – chacham15 2012-08-16 20:47:59