gcc 4.4.3 c89 linux
Я использую log4c и поместил inc и lib в следующие каталоги
/home/jeff/projects/gateway/tools/log4c/inc
/home/jeff/projects/gateway/tools/log4c/lib
В моем Makefile я указал путь inc и lib:
INC_PATH = -I tools/log4c/inc
LIB_PATH = -L tools/log4c/lib
LIBS = -llog4c
В моем каталоге lib у меня есть следующие разделяемые библиотеки:
lrwxrwxrwx 1 root root 17 2010-08-26 15:57liblog4c.so -> liblog4c.so.3.1.0
lrwxrwxrwx 1 root root 17 2010-08-26 15:57 liblog4c.so.3 -> liblog4c.so.3.1.0
-rw-r--r-- 1 root root 100180 2010-08-26 15:55 liblog4c.so.3.1.0
Я компилирую свое приложение на своей машине разработки, затем копирую каталог двоичных файлов и инструментов на тестовую машину
Поэтому, когда я выполняю двоичный файл на тестовой машине, я получаю следующую ошибку:
./app: error while loading shared libraries: liblog4c.so.3: cannot open shared object file: No such file or directory
Однако все работает нормально на моей машине разработки, которая имеет ту же структуру каталогов, то есть
машина разработчика:
/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib
тестовая машина:
/projects/gateway/app
/projects/gateway/tools/log4c/inc
/projects/gateway/tools/log4c/lib
Поэтому мне интересно, почему она не может найти ее в разделяемой библиотеке.
Большое спасибо за любые предложения,
/projects/gateway/tools/log4c/lib
следует либо поместить в /etc/ld.so.conf
(после вызова /sbin/ldconfig), либо в LD_LIBRARY_PATH
, чтобы динамический компоновщик знал, где искать требуемую разделяемую библиотеку.
Дополнительную информацию см. в Program Library HOWTO (3.5. Установка и использование общей библиотеки)