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

バイナリ パッケージを使用して次のバージョンの 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

移植版もインストールしましたが、結果は同じでした。

一体何が間違っているのでしょうか?

答え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 を採用するのはなぜですか?

関連情報