GCC 无法在 FreeBSD 上运行

ada*_*mse 4 freebsd bsd-ports gcc ar

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

我已经使用二进制 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     : gerald@FreeBSD.org
WWW            : http://gcc.gnu.org/
Comment        : GNU Compiler Collection 4.7
Options        :
        BOOTSTRAP      : off
        JAVA           : on
Run Code Online (Sandbox Code Playgroud)

我也安装了端口版本,结果相同。

什么可能是错的?

Rap*_*ens 6

由于 FreeBSD 10 Clang是新的默认编译器。

您可以尝试使用 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?