тогда он будет ругаться на
ldconfig: Невозможно создать ссылку с /usr/lib//home/project/utils/new/lib/libtaxifuncs.so на libtaxifuncs.so
дык очевидно - в этом случае нужно использовать другой путь.
тогда он будет ругаться на
ldconfig: Невозможно создать ссылку с /usr/lib//home/project/utils/new/lib/libtaxifuncs.so на libtaxifuncs.so
дык очевидно - в этом случае нужно использовать другой путь.
[quote=vscorpion]тогда он будет ругаться на
ldconfig: Невозможно создать ссылку с /usr/lib//home/project/utils/new/lib/libtaxifuncs.so на libtaxifuncs.so
дык очевидно - в этом случае нужно использовать другой путь.[/quote]
какой, я сюда и обратился, чтоб помогли. Простите, может будет грубо - но я мысли не умею читать :)
может в /etc/ld.so.conf добавить строчку вида: /usr/lib/lib и перестроить кеш? smile
это ничем не поможет
какой, я сюда и обратился, чтоб помогли. Простите, может будет грубо - но я мысли не умею читать
ну смотрите: у вас путь lib, и поиск идёт в каталоге /usr/lib/lib, видимо в данной команде нужно сделать путь -L"" (пустая строка), тогда поиск будет идти в /usr/lib/
может в /etc/ld.so.conf добавить строчку вида: /usr/lib/lib и перестроить кеш?
можно и так. Только тогда вместо
cp -fR $(TAXILIB)/*.so /usr/lib/
нужно написать
cp -fR $(TAXILIB)/*.so /usr/lib/lib
что-бы либы скопировались именно в этот каталог.
Вся беда как раз и заключается в том, что ldconfig кеширует не тот каталог. С какой стороны это исправлять - дело вкуса. ИМХО создавать /usr/lib/lib менее правильное решение. Но работать оно будет.
но я мысли не умею читать
дык я сам не очень понимаю, что у вас накручено в Makefile smile
а разбираться лениво wink
[quote=vscorpion]какой, я сюда и обратился, чтоб помогли. Простите, может будет грубо - но я мысли не умею читать
ну смотрите: у вас путь lib, и поиск идёт в каталоге /usr/lib/lib, видимо в данной команде нужно сделать путь -L"" (пустая строка), тогда поиск будет идти в /usr/lib/
может в /etc/ld.so.conf добавить строчку вида: /usr/lib/lib и перестроить кеш?
можно и так. Только тогда вместо
cp -fR $(TAXILIB)/*.so /usr/lib/
нужно написать
cp -fR $(TAXILIB)/*.so /usr/lib/lib
что-бы либы скопировались именно в этот каталог.
Вся беда как раз и заключается в том, что ldconfig кеширует не тот каталог. С какой стороны это исправлять - дело вкуса. ИМХО создавать /usr/lib/lib менее правильное решение. Но работать оно будет.[/quote]
сделал как Вы сказали
$(PROGRAM_NAME): $(OBJECT_FILES)
$(CXX) $(CXXFLAGS) -o $@ $^ -L $(LIBS)
теперь он не компилит, так как ен может найти библиотеки...
g++ -DIBPP_LINUX -Wl,-rpath,/usr -I./include/boost -I/usr/local/cppconn -I/usr/include/ibpp -o taxi lib/libtaxifinance.so lib/libtaxifuncs.so lib/libtaxiconf.so lib/libtaxistats.so lib/libtaxipenalty.so taxi.o -L -ltaxifinance -ltaxifuncs -ltaxiconf -ltaxistats -ltaxipenalty -libpp
/usr/bin/ld: cannot find -ltaxifuncs
collect2: ld returned 1 exit status
make: *** [taxi] Ошибка 1
киньте тогда свои чтоль файлы..посмотрю сделаю поаналогии
киньте тогда свои чтоль файлы..посмотрю сделаю поаналогии
сорри, нет времени искать подходящий проект. потом напишу..
посмотрите пока в Сети, вот сходу нашёл: http://gentoo.theserverside.ru/book/ld_shared_libs_so_and_more.html
ок спасибо...поищу, но я как раз по аналогии и делал мейк файл
Блин на скоко понял не видит либы. Такая беда бывает когда сам компилишь проги я делаю такс LD_LIBRARY_PATH=/usr/local/lib lirc -d
но я как раз по аналогии и делал мейк файл
ну просто при сборке библиотеки лежат в /home/project/utils/new/lib/ (и туда верно указывает ваша $(TAXILIB)), но когда вы выполняете ldconfig, программа уже установлена, и все либы скопированы в /usr/lib/. У вас всё работает лишь потому, что в момент запуска lib/ содержит эти библиотеки, но так работает только если PWD=/home/project/utils/new/. При запуске из crond это совсем не так.\
В итоге, вам нужно отдельно прописывать путь к библиотекам во время сборки (цель all: ), и отдельно во время выполнения (именно для времени выполнения создаёт кеш команда ldconfig).
[quote=vscorpion]но я как раз по аналогии и делал мейк файл
ну просто при сборке библиотеки лежат в /home/project/utils/new/lib/ (и туда верно указывает ваша $(TAXILIB)), но когда вы выполняете ldconfig, программа уже установлена, и все либы скопированы в /usr/lib/. У вас всё работает лишь потому, что в момент запуска lib/ содержит эти библиотеки, но так работает только если PWD=/home/project/utils/new/. При запуске из crond это совсем не так.\
В итоге, вам нужно отдельно прописывать путь к библиотекам во время сборки (цель all: ), и отдельно во время выполнения (именно для времени выполнения создаёт кеш команда ldconfig).[/quote]
а как - дайте пример, я не соображу