2014-12-07 23 views
4

基於下面的identify-compilers.sh腳本的輸出,看來下列C語言編譯器可在Cygwin。那些標有「Cygwin」的要求cygwin1.dll文件可用。Cygwin上的C編譯器生成了什麼?

「pc」和「w64」編譯器有什麼區別?

爲什麼沒有x86_64-pc-mingw-gcc.exe executabe?

是否還有其他C編譯器可用?

/usr/bin/gcc.exe      64-bit Cygwin 
/usr/bin/i686-pc-cygwin-gcc.exe   32-bit Cygwin 
/usr/bin/i686-pc-mingw32-gcc.exe  32-bit 
/usr/bin/i686-w64-mingw32-gcc.exe  32-bit 
/usr/bin/x86_64-pc-cygwin-gcc.exe  64-bit Cygwin 
/usr/bin/x86_64-w64-mingw32-gcc.exe  64-bit 

$ cat identify-compilers.sh 
#!/bin/bash 
for c in $(ls -1 /usr/bin/*gcc.exe); do 
    echo === compiler: $c 
    $c -o hello.exe hello.c 
    objdump -p hello.exe | grep -i "cygwin" 
    objdump -p hello.exe | grep -i "64$" 
    rm hello.exe 
done 

回答

3
  1. gcc僅僅是一個硬鏈接x86_64-pc-cygwin-gcc

  2. x86_64-pc-cygwin-gcci686-pc-cygwin-gcc是如你所說的 Cygwin編譯器,也就是創造依賴 上cygwin1.dll程序編譯器

  3. x86_64-w64-mingw32-gcci686-w64-mingw32-gcc是編譯器由Mingw-w64 project

  4. i686-pc-mingw32-gcc提供 是一個編譯器由MinGW project

你可能會疑惑,爲什麼兩個MinGW的項目提供?那麼Mingw-w64的項目是 ,因爲MinGW refused to adopt是64位編譯器。這 和MSYS2 project的起點之間,我認爲MinGW的項目 過時。

相關問題