configure:エラー:Cコンパイラは実行可能ファイルを作成できません


15

を使用して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
'./configure'スクリプトを実行するときにCPPFLAGSにCXXFLAGSを誤って指定すると、このエラーが発生しました。したがって、エラーメッセージは正確なエラーを説明しません。
RajaRaviVarma

回答:


12

それはあなたがGNUリンカの非標準バージョン持っているように見えるldあなたの中に /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部門に連絡してください。


9
通常、正当な理由で/usr/local/bin先を行っ/usr/binていPATHます。ディストリビューションのバージョンが優先される場合、プログラムをローカルにインストールしても意味がありません。問題を見つけるのは良い仕事ですが、推奨される解決策はPATHを変更するのではなく、壊れたものを削除または修正すること/usr/local/bin/ldです。
ジル 'SO-悪であるのをやめる'

@steeldriver:〜/ .bashrcにない場合は、行 "export PATH =" / usr / bin:$ PATH ""をコピーアンドペーストできます。または、他のプログラムで問題が発生しますか?
ナカ

@Gilles私はあなたのコメントを反映するために私の答えを編集しました@nakaそれに対してアドバイスします、それは長期的にはより混乱を引き起こすでしょう-あなたはGillesのコメントに注意しあなたの管理者がバージョンin/usr/local
steeldriver

3
私は同じエラーを受け取りました...これは私にはうまくいきませんでした... which ldリターンのみ/usr/bin/ld...。
同型14年

9

上記の複雑な理由に反して、私の場合は、単にg++インストールされていない場合でした。奇妙なことに、エラーメッセージはOPの説明と同じでした。

configure: error: C compiler cannot create executables

とにかく、g ++をインストールすることでこれを解決しました。

sudo apt-get install g++

0

システムを更新し、ldおよびコンパイラ(gcc)を提供するパッケージを再インストールしてください。を実行しますprelink -au && depmod -a。次に再起動します。

/etc/systemctlディストリビューションでこれを設定する場所では、プレリンクを無効にするか再構成する必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.