GCC 4.4.3 c89 линукскопирование приложения на другую машину, не может найти разделяемые библиотеки
Я использую log4c и поместили ИНК и Лив в следующих каталогах
/home/jeff/projects/gateway/tools/log4c/inc
/home/jeff/projects/gateway/tools/log4c/lib
В моем Makefile У меня есть указанный ИНК и 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
Однако, все прекрасно работает на моей машине развития, которая имеет ту же структуру каталогов, т.е.
Dev машины:
/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
Так мне интересно, почему он не может найти его общую библиотеку.
Большого спасибо за любые предложения,
Как об использовании RPATH. Причина, по которой я спросил, заключается в том, что пользователь не знает, как настроить систему. Я просто дам им двоичные файлы, и клиент просто хочет запустить приложение. Благодарю. – ant2009
Да, использование 'rpath' также является опцией, вам просто нужно поставить допустимый (для dev, test и production) путь библиотеки. Если это относительно, вам нужно будет запустить программу из указанного каталога, где путь будет действительным. –