ldconfig не находит libprotobuf.so

ldconfig не находит libprotobuf.so

Я пытаюсь установитьпротобуфбиблиотека в системе Redhat (сборка Linux Amazon EC2). Я запустил configure, make, и make installбез проблем, и .soбиблиотеки были скопированы в /usr/local/lib. Поскольку Redhat не включает /usr/local/libкаталог в /etc/ld.so.conf, я добавил его, а затем запустил ldconfigдля обновления связей.

Моя проблема в том, что по какой-то причине ldconfigномер не отвечает libprotobuf.so, хотя он есть в /usr/local/libсправочнике.

Вот вывод ls -l /usr/local/lib:

total 61336
-rw-r--r-- 1 root root 17654940 Mar 26 02:39 libprotobuf.a
-rwxr-xr-x 1 root root      994 Mar 26 02:39 libprotobuf.la
-rw-r--r-- 1 root root  1948106 Mar 26 02:39 libprotobuf-lite.a
-rwxr-xr-x 1 root root     1029 Mar 26 02:39 libprotobuf-lite.la
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so -> libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
-rwxr-xr-x 1 root root   893083 Mar 26 02:39 libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so -> libprotobuf.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so.7 -> libprotobuf.so.7.0.0
-rwxr-xr-x 1 root root  7326093 Mar 26 02:39 libprotobuf.so.7.0.0
-rw-r--r-- 1 root root 25883264 Mar 26 02:39 libprotoc.a
-rwxr-xr-x 1 root root     1010 Mar 26 02:39 libprotoc.la
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so -> libprotoc.so.7.0.0
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so.7 -> libprotoc.so.7.0.0
-rwxr-xr-x 1 root root  9071740 Mar 26 02:39 libprotoc.so.7.0.0
drwxr-xr-x 2 root root     4096 Mar 26 02:39 pkgconfig

Вот вывод ldconfig -v | grep protobuf:

libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0

Что мне нужно сделать, чтобы меня libprotobufраспознал компоновщик?

Редактировать: Когда я пытаюсь напрямую подключить библиотеку, я получаю эту ошибку:

ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.

Я попробовал скопировать libprotobuf.so.7.0.0так libprotobuf.so, чтобы это больше не было символической ссылкой, что исправило ошибку, но мой компоновщик по-прежнему не может найти libprotobuf.

решение1

ld.so.confиспользуется только динамическим компоновщиком времени выполнения. ldне использует ли он это вообще - вам нужно передать /usr/local/libв качестве каталога поиска компоновщика (либо напрямую, ldесли вы вызываете его напрямую, либо через ваш компилятор).

Для ldGCC (или clang, а возможно, и для многих других компиляторов) это делается с помощью флага -L.

Связанный контент