Open3d: link yang hilang ke libdl

Dibuat pada 23 Jul 2019  ·  4Komentar  ·  Sumber: intel-isl/Open3D

Hai, Saya mencoba membangun Open3D v0.7.0 dari sumber.
Untuk alasan apa pun saya mendapatkan kesalahan penautan:

[ 77%] Linking CXX executable ../../bin/examples/ViewPCDMatch
/usr/bin/ld: /usr/local/lib/libglfw3.a(vulkan.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
examples/Cpp/CMakeFiles/ViewPCDMatch.dir/build.make:91: recipe for target 'bin/examples/ViewPCDMatch' failed
make[2]: *** [bin/examples/ViewPCDMatch] Error 1
CMakeFiles/Makefile2:1555: recipe for target 'examples/Cpp/CMakeFiles/ViewPCDMatch.dir/all' failed
make[1]: *** [examples/Cpp/CMakeFiles/ViewPCDMatch.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Langkah-langkah untuk mereproduksi:

$ git clone --recursive --branch v0.7.0 https://github.com/intel-isl/Open3D.git
$ cd Open3D/util/scripts/
$ ./build.sh

Saya menduga lokasi yang tidak biasa untuk perpustakaan - /usr/lib/x86_64-linux-gnu/libdl.so , atau semacam masalah dengan file cmake (sayangnya saya tidak pandai dengan cmake jadi tidak tahu apa yang harus dicari).

question

Semua 4 komentar

Saya mengalami masalah ini minggu lalu, mencoba banyak hal tetapi akhirnya terkompilasi dengan baik setelah reboot.

Melihat online memberi tahu saya bahwa penaut kehilangan beberapa perpustakaan yang ditautkan di sistem.
Kesalahan yang saya dapatkan adalah:

/usr/bin/ld: /usr/local/lib/libglfw3.a(vulkan.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_window.c.o): undefined reference to symbol 'XConvertSelection'

Menggunakan make -verbose menunjukkan bahwa make tidak menambahkan pustaka ini, jadi CMake membuat kesalahan di suatu tempat selama konfigurasi. Beberapa info di sini

Jadi yang perlu saya lakukan adalah menambahkan -ldl dan -lX11 di akhir proses tautan. Alih-alih memodifikasi file CMakeLists.txt, saya menemukan cara Hacky untuk melakukannya pada baris perintah. Saya memperbaikinya dengan menambahkan parameter ini di akhir CMAKE: -DCMAKE_CXX_STANDARD_LIBRARIES="-lX11 -ldl" . Retasan ini ditemukan di sini .

Menyusun dengan baik dan berjalan dengan baik.

@yxlao Apakah ada yang ingin Anda katakan tentang masalah bangunan ini?

Dari pesan kesalahan, /usr/local/lib/libglfw3.a adalah pustaka sistem, yang tidak dijamin akan kompatibel dengan Open3D. Sekarang kami telah menyetel default untuk selalu menggunakan GLFW yang disertakan dengan sistem CMake Open3D, yang seharusnya menghindari masalah ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat