Mencoba mengkompilasi bahkan program yang paling sederhana ( int main(){}
) dengan -m32
sistem 64-bit gagal:
$ gcc -m32 test.c
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
Tampaknya masih keliru mencari di direktori yang salah ketika -m32
ditentukan.
libgcc-4.8-dev:i386
diinstal dan saya telah memverifikasi bahwa perpustakaan 32-bit berada di /usr/lib/gcc/i686-linux-gnu/4.8/
.
Saya sudah mencoba pengaturan dan ekspor LD_INCLUDE_PATH
dan LD_LIBRARY_PATH
tidak berhasil.
Jawaban:
Pertama, Anda perlu menginstal "gcc-multilib" dan "g ++ - multilib"
Maka perintah Anda saat ini akan bekerja,
sumber
g++-multilib
juga akan diperlukan.libc6-dev-i386
.Agar berhasil mengkompilasi kode C ke executable x86 32 Bit dalam lingkungan x86_64 Anda harus menginstal paket tambahan berikut:
Setelah panggilan kompilasi suka
berhasil.
sumber
Masalah ini juga terjadi ketika
gcc
versi tidak cocok dengan versigcc-multilib
. Dalam hal ini Anda harus menginstal versi yang benar dari paket multilib. Sebagai contoh; Saya menggunakan versi gcc4.6
jadi saya harus menginstalgcc-4.6-multilib
dang++-4.6-multilib
karenagcc-multilib
paket default untuk4.8
.sumber