"relokasi R_X86_64_32S terhadap " menghubungkan Kesalahan
I'm Mencoba untuk Link statis Perpustakaan ke perpustakaan bersama , aku'm Mendapatkan error Berikut
/usr/bin/ld: ../../../perpustakaan/log4cplus/liblog4cplus.a(fileappender.o): relokasi R_X86_64_32S terhadap `sebuah simbol lokal' tidak dapat digunakan ketika membuat sebuah objek bersama; mengkompilasi ulang dengan -fPIC ../../../perpustakaan/log4cplus/liblog4cplus.a: tidak bisa membaca simbol-simbol: nilai Buruk collect2: ld kembali 1 status keluar
Tapi ini bekerja pada 32 bit mesin tanpa kesalahan tersebut. Saya mencoba menambahkan -fPIC
bendera manual untuk Makefile yang terlalu didn't memecahkan masalah
Aku mencoba -seluruh-arsip
bendera seperti yang disarankan here tetapi tidak berhasil.
/usr/bin/ld: ../../../perpustakaan/log4cplus/liblog4cplus.a(appenderattachableimpl.o): relokasi R_X86_64_32S terhadap `vtable untuk log4cplus::spi::AppenderAttachable' tidak dapat digunakan ketika membuat sebuah objek bersama; mengkompilasi ulang dengan -fPIC ../../../perpustakaan/log4cplus/liblog4cplus.a(appenderattachableimpl.o): tidak bisa membaca simbol-simbol: nilai Buruk collect2: ld kembali 1 status keluar
Penciptaan liblog4cplus.a:
unzip log4cplus-1.1.0.zip
./configure --enable-statis=ya --enable-benang=yes
vi Makefile
dan menambahkan -fPIC untuk CXXFLAGS dan CFLAGSmembuat
Kemudian untuk Menyusun ruang perpustakaan:
g++ -frtti -w -c -fPIC -aku"Include_Directory" myfile.cpp
g++ -bersama -fPIC -frtti -aku"Include_Directory" -o mysofile.jadi myfile.o -Wl, - seluruh-arsip "../../../perpustakaan/log4cplus/liblog4cplus." -Wl, - tidak-seluruh-arsip -ldl
53
3
Dengan asumsi anda menghasilkan ruang perpustakaan, kemungkinan besar yang terjadi adalah varian dari
liblog4cplus.
anda tidak menggunakan't disusun dengan-fPIC
. Di linux, anda dapat mengkonfirmasi hal ini dengan mengekstrak file objek dari perpustakaan statis dan memeriksa mereka relokasi:Jika output adalah kosong, maka perpustakaan statis tidak-posisi independen dan tidak dapat digunakan untuk menghasilkan objek bersama.
Sejak statis perpustakaan berisi kode objek yang sudah disusun, menyediakan -fPIC bendera won't membantu.
Anda perlu untuk mendapatkan kuasai versi
liblog4cplus.a
yang disusun dengan-fPIC
dan menggunakan salah satu yang sebaliknya.I've punya kesalahan yang sama ketika menginstal FCL bahwa kebutuhan CCD lib(libccd) seperti ini:
Saya menemukan bahwa ada dua file yang berbeda bernama "libccd." :
Aku memecahkan masalah dengan menghapus file pertama.
Relokasi R_X86_64_PC32 terhadap simbol tidak terdefinisi , biasanya terjadi ketika LDFLAGS ditetapkan dengan pengerasan dan CFLAGS tidak . Mungkin hanya kesalahan pengguna: Jika anda menggunakan -spesifikasi=/usr/lib/rpm/redhat/redhat-mengeras-ld pada saat link, anda juga perlu untuk menggunakan -spesifikasi=/usr/lib/rpm/redhat/redhat-mengeras-cc1 pada waktu kompilasi, dan seperti yang anda kompilasi dan linking pada saat yang sama, anda perlu baik baik, atau drop -spesifikasi=/usr/lib/rpm/redhat/redhat-mengeras-ld . Perbaikan umum : https://bugzilla.redhat.com/show_bug.cgi?id=1304277#c3 https://github.com/rpmfusion/lxdream/blob/master/lxdream-0.9.1-implicit.patch