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?

相关内容