
Я пытаюсь установитьпротобуфбиблиотека в системе 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
если вы вызываете его напрямую, либо через ваш компилятор).
Для ld
GCC (или clang, а возможно, и для многих других компиляторов) это делается с помощью флага -L
.