GCC 無法在 FreeBSD 上運行

GCC 無法在 FreeBSD 上運行

我嘗試在 FreeBSD 上運行 GCC,但收到此錯誤:

% gcc
ar: unrecognized option `--plugin'
usage:  ar -d [-Tjsvz] archive file ...
        ar -m [-Tjsvz] archive file ...
        ar -m [-Tabijsvz] position archive file ...
        ar -p [-Tv] archive [file ...]
        ar -q [-TcDjsvz] archive file ...
        ar -r [-TcDjsuvz] archive file ...
        ar -r [-TabcDijsuvz] position archive file ...
        ar -s [-jz] archive
        ar -t [-Tv] archive [file ...]
        ar -x [-CTouv] archive [file ...]
        ar -V

我使用二進位 pkg 安裝了以下版本的 GCC:

% pkg info gcc
gcc-4.7.3_1
Name           : gcc
Version        : 4.7.3_1
Installed on   : Wed Jun 25 15:22:58 CEST 2014
Origin         : lang/gcc
Architecture   : freebsd:10:x86:64
Prefix         : /usr/local
Categories     : lang java
Licenses       : GPLv3RLE and GPLv3
Maintainer     : [email protected]
WWW            : http://gcc.gnu.org/
Comment        : GNU Compiler Collection 4.7
Options        :
        BOOTSTRAP      : off
        JAVA           : on

我也安裝了port版本,結果相同。

可能出了什麼問題?

答案1

從 FreeBSD 10 開始是新的預設編譯器。

您可以嘗試使用 Clang 編譯程式碼,或者需要像您一樣安裝 GCC 版本。

但在切換到 Clang 之前,FreeBSD 使用 GCC 4.2 版本,而該 GCC 的二進位檔案是/usr/bin/gcc,因此 GCC 的較新連接埠需要以不同的方式命名該二進位檔案。

因此,所有 GCC 連接埠都有一個名為 的二進位文件/usr/local/bin/gccXY,其中XY是版本號。

當你在 FreeBSD 上安裝 gcc4.7 時,你不會得到/usr/local/bin/gcc舊行為的感謝,而是得到 /usr/local/bin/gcc47`。

長話短說,當您想使用 GCC 4.7 編譯程式碼時,您需要使用gcc47而不是gcc.

但也許您應該嘗試 Clang,因為使用不同的編譯器編譯您的程式碼以查看您的程式碼是否依賴編譯器總是一個好主意。因為如果它不編譯,您的程式碼可能已損壞,或者您發現了一個很棒的編譯器錯誤。

還看一下為什麼 FreeBSD 棄用 GCC 而支援 Clang/LLVM?

相關內容