configure: error: C compiler tidak dapat membuat executable

15

Saya mencoba menginstal rvm menggunakan \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles. Ini berfungsi dengan baik sampai saya mendapat kesalahan konfigurasi:

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.

Berikut ini adalah isi dari file log yang disebutkan:

[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

Saya kemudian mencoba program C "hello world" dan mendapatkan kesalahan berikut pada kompilasi:

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

Saya tidak yakin mengapa kesalahan ini terjadi. Saya tidak dapat menemukan jawaban yang memuaskan untuk ini di forum. Bisakah seseorang tolong bantu. Terima kasih

naka
sumber
1
Saya mendapatkan kesalahan ini ketika saya keliru menentukan CXXFLAGS untuk CPPFLAGS ketika menjalankan skrip './configure'. Jadi pesan kesalahan tidak menjelaskan kesalahan sebenarnya.
RajaRaviVarma

Jawaban:

12

Sepertinya Anda memiliki versi non-standar dari GNU linker lddi /usr/local/bindirektori Anda (mungkin diinstal dari sumber), dan variabel lingkungan PATH Anda diatur sedemikian rupa sehingga sistem menemukan versi itu sebelum versi 'sistem' (yang seharusnya berada di /usr/bin/ld) . Jika Anda ingin membangun menggunakan versi sistem standar dari alat bantu bangunan , Anda perlu menyesuaikan variabel lingkungan PATH Anda agar mencari /usr/binsebelum/usr/local/bin

Jika Anda ingin memperbaiki variabel PATH Anda secara permanen, Anda harus mencari tahu di mana Anda mengaturnya semula - mungkin dalam file ~ / .bashrc Anda, tetapi lokasi lain dimungkinkan. Atau, jika Anda hanya perlu perbaikan sementara untuk bangunan ini, Anda bisa mencoba

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

di terminal sebelum menjalankan ./configure

Namun kadang-kadang ada alasan bagus mengapa Anda (atau admin sistem Anda) mungkin ingin Anda menggunakan versi alat /usr/local- jika demikian, maka Anda perlu mencari tahu mengapa ldada tampaknya tidak kompatibel dengan sisa rantai pembuatan dan perbaikan itu - jika ini adalah sistem kerja atau sekolah maka hubungi administrator sistem Anda atau departemen TI.

Steeldriver
sumber
9
Biasanya /usr/local/binadalah depan /usr/bindi PATHuntuk alasan yang baik: tidak ada gunanya memiliki program yang diinstal secara lokal jika versi dari distribusi diutamakan. Pekerjaan bagus menemukan masalah, tetapi resolusi yang disarankan bukan untuk mengubah PATH tetapi untuk menghapus atau memperbaiki yang rusak /usr/local/bin/ld.
Gilles 'SO- stop being evil'
@steeldriver: Jika tidak ada di ~ / .bashrc bisa saya salin-tempel baris "export PATH =" / usr / bin: $ PATH "" di sana. Atau akankah itu menciptakan masalah untuk program lain?
naka
@Gilles Saya telah mengedit jawaban saya untuk mencerminkan komentar Anda @naka Saya menyarankan agar, dalam jangka panjang akan lebih membingungkan - Anda harus mencatat komentar Gilles dan mencari tahu mengapa admin Anda telah mengatur PATH untuk menggunakan versi di/usr/local
steeldriver
3
Saya mendapat kesalahan yang sama ... ini tidak bekerja untuk saya ... which ldhanya mengembalikan /usr/bin/ld....
isomorfisma
9

Bertentangan dengan alasan rumit yang diberikan di atas, dalam kasus saya, itu hanyalah kasus tidak g++menginstal. Anehnya, pesan kesalahan itu sama seperti yang dijelaskan oleh OP yaitu

configure: error: C compiler cannot create executables

Omong-omong, saya menyelesaikan ini dengan menginstal g ++:

sudo apt-get install g++
rahul1210
sumber
0

Coba perbarui sistem, instal ulang paket yang menyediakan ld dan kompiler ( gcc ). Lari prelink -au && depmod -a. Kemudian reboot.

Anda mungkin perlu menonaktifkan atau mengkonfigurasi ulang prelink di /etc/systemctlatau di mana pun distro Anda mengaturnya.

pengguna599717
sumber