配置:错误:C 编译器无法创建可执行文件

配置:错误:C 编译器无法创建可执行文件

我尝试使用 安装 rvm \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles。一切正常,直到我收到配置错误:

Error running './configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared',
please read /home/nishant/.rvm/log/1379591052_ruby-2.0.0-p247/configure.log
There has been an error while running configure. Halting the installation.

以下是所述日志文件的内容:

[2013-09-19 17:15:58] ./configure
current path: /home/nishant/.rvm/src/ruby-2.0.0-p247
command(4): ./configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/nishant/.rvm/src/ruby-2.0.0-p247':
configure: error: C compiler cannot create executables
See `config.log' for more details

然后我尝试了一个“hello world”C程序并在编译时收到以下错误:

nishant@nishant-Inspiron-1545:~$ gcc -g -o hello hello.c 
/usr/local/bin/ld: this linker was not configured to use sysroots
collect2: error: ld returned 1 exit status

我不确定为什么会抛出此错误。我在论坛上找不到令人满意的答案。有人能帮忙吗?谢谢

答案1

ld看起来您的目录中 有一个非标准版本的 GNU 链接器/usr/local/bin(可能是从源代码安装的),并且您的 PATH 环境变量设置为系统在“系统”版本(应该在/usr/bin/ld)之前找到该版本。如果你想使用标准系统版本的构建工具进行构建,你需要调整你的 PATH 环境变量,以便它能够/usr/bin提前搜索/usr/local/bin

如果你想永久修复你的 PATH 变量,你需要找到你最初设置它的位置 - 可能是在你的 ~/.bashrc 文件中,但其他位置也是可能的。或者,如果你只是需要对此版本进行临时修复,你可以尝试

export PATH="/usr/bin:$PATH"

在终端中执行./configure

但是,有时候您(或您的系统管理员)可能希望您使用来自版本的工具,这是有充分理由的/usr/local- 如果是这样,那么您将需要找出为什么它ld显然与构建链的其余部分不兼容并修复它 - 如果这是工作或学校系统,请联系您的系统管理员或 IT 部门。

答案2

与上面给出的复杂原因相反,就我而言,这只是一个没有g++安装的情况。奇怪的是,错误消息与 OP 描述的相同,即

configure: error: C compiler cannot create executables

无论如何,我通过安装 g++ 解决了这个问题:

sudo apt-get install g++

答案3

尝试更新系统,重新安装提供的软件包和编译器(海湾合作委员会)。运行prelink -au && depmod -a。然后重启。

您可能需要在/etc/systemctl发行版中或设置预链接的任何地方禁用或重新配置预链接。

相关内容