Почему ldconfig не связывает и не кэширует мою библиотеку? - PullRequest
1 голос
/ 08 июня 2019

Я нахожусь на Ubuntu 18.04, GCC 7.4

Я создал тестовую разделяемую библиотеку и скопировал ее в / usr / local / lib / .so файл был создан следующим образом:

gcc -Wall -fPIC -c src/Test.cpp -o obj/Test.o
gcc -shared -Wl,-soname,libhztest.so -o bin/libhztest.so obj/*.o
sudo cp bin/libhztest.so /usr/local/lib/hazeltest/
sudo chmod 777 /usr/local/lib/hazeltest/

Затем я создал тестовое приложение и попытался запустить его, и я получил: ошибка при загрузке общих библиотек: libhztest.so: не могу открыть файл общего объекта: нет такого файла или каталога

Если я это сделаюэкспортируйте правильный LD_LIBRARY_PATH, и он работает, но я предпочитаю использовать ldconfig

К сожалению, ldconfig, похоже, не связывает мою библиотеку, даже если каталог / usr / local / lib / хорошо включен в / etc / ld.so.conf

Кто-нибудь может сказать мне, почему это не работает?Спасибо

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Вам необходимо скопировать его в /usr/local/lib/, а не /usr/local/lib/hazeltest/. Либо так, либо добавьте /usr/local/lib/hazeltest/ к /etc/ld.so.conf. (Хотя я думаю, что вы должны добавить это в новый файл в /etc/ld.so.conf.d/ вместо этого, например /etc/ld.so.conf.d/hazeltest.conf, чтобы вы не изменяли напрямую ld.so.conf, который может быть автоматически сгенерированным файлом).

0 голосов
/ 08 июня 2019

Я наконец запустил команду:

sudo ldconfig /usr/local/lib/hazeltest/
...