我尝试使用 安装 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
发行版中或设置预链接的任何地方禁用或重新配置预链接。