копирование приложения на другой компьютер, не удается найти общую библиотеку - PullRequest
1 голос
/ 26 августа 2010

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

Поэтому мне интересно, почему он не может найти его в общей библиотеке.

Большое спасибо за любые предложения,

1 Ответ

2 голосов
/ 26 августа 2010

/projects/gateway/tools/log4c/lib следует установить в /etc/ld.so.conf (call / sbin / ldconfig after) или в LD_LIBRARY_PATH переменную оболочки, чтобы динамический компоновщик знал, где искать требуемую разделяемую библиотеку.

См. Библиотека программ HOWTO (3.5. Установка и использование общей библиотеки) для получения дополнительной информации

...