使用最近的Cygwin版本在C中没有生成exe文件

red*_*d69 6 c windows gcc cygwin

GCC 4.9.2不创建可执行文件,无论a.out-o hello.exe.添加-v到编译行表示-o切换到不存在的临时文件,例如:-o /tmp/ccr6nMlO.s

最近几个月在Windows XP和Windows 7上安装的Cygwin NT-6.1都无法生成可执行文件.我在一台完美运行的旧笔记本电脑上找到了Cygwin 1.7.3.

编译标志或其语法是否已更改?此命令无法生成可执行文件:

gcc hello.c -o hello.exe
Run Code Online (Sandbox Code Playgroud)

这是我的版本.我以为它来自Cygwin镜子.$ uname -a

CYGWIN_NT-6.1-WOW Gary-PC 1.7.35(0.287/5/3) 2015-03-04 12:07 i686
Run Code Online (Sandbox Code Playgroud)

这是一个编译示例:

$ gcc hello.c -o hello.exe
Run Code Online (Sandbox Code Playgroud)

echo $?返回a 1,没有评论.所以编译器失败了.

编译任何代码的所有尝试都无法在当前目录中生成任何内容,并且不会报告任何错误或警告.ctgcheck -c bash binutils bzip2 cygwin gcc-core gcc-g++ gzip m4 make unzip zip表示一切都已安装:

Cygwin Package Information
Package              Version        Status
bash                 4.3.33-1       OK
binutils             2.25-1         OK
bzip2                1.0.6-2        OK
cygwin               1.7.35-1       OK
gcc-core             4.9.2-3        OK
gcc-g++              4.9.2-3        OK
gzip                 1.6-1          OK
m4                   1.4.17-1       OK
make                 4.1-1          OK
unzip                6.0-14         OK
Run Code Online (Sandbox Code Playgroud)

编译时-v给出了这个报告:

$ gcc hello.c -o hello.exe -v

Using built-in specs. 
COLLECT_GCC=gcc 
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.9.2/lto-wrapper.exe 
Target: i686-pc-cygwin 
Configured with: /cygdrive/i/szsz/tmpp/gcc/gcc-4.9.2-3.i686/src/gcc-4.9.2/configure --srcdir=/cygdrive/i/szsz/tmpp/gcc/gcc-4.9.2-3.i686/src/gcc-4.9.2 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-pc-cygwin --without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit --with-dwarf2 --with-arch=i686 --with-tune=generic --disable-sjlj-exceptions --enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada --enable-libjava --enable-libgcj-sublibs --disable-java-awt --disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id 
Thread model: posix gcc version 4.9.2 (GCC) 
COLLECT_GCC_OPTIONS='-o' 'hello.exe' '-v' '-mtune=generic' '-march=i686' /usr/lib/gcc/i686-pc-cygwin/4.9.2/cc1.exe -quiet -v -Dunix -idirafter /usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../i686-pc-cygwin/lib/../../include/w32api hello.c -quiet -dumpbase hello.c -mtune=generic -march=i686 -auxbase hello -version -o /tmp/cc8W4cOy.s
Run Code Online (Sandbox Code Playgroud)

我还在Windows XP上安装了Cygwin来报告这个版本: CYGWIN_NT-5.1 lt-love6 1.7.35(0.287/5/3) 2015-03-04 12:07 i686 Cygwin

编译结果hello.c是相同的.没有可执行文件,$?=1表明编译失败.此外,没有报告错误或警告.使用-v提供类似于上面的报告.

Sti*_*y90 0

根据我的使用,Cygwin 终端中的一个简单的 GCC 命令如下

$ gcc filename.c
Run Code Online (Sandbox Code Playgroud)

生成输出文件“a”。您可以按如下方式运行它:

$ ./a
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。