|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
Cmake: исполняемый файл ищет *.so по другому пути21.05.2020, 16:57. Показов 17118. Ответов 26
Здравствуйте, есть вот такая конфигурация проекта:
proj/main.c proj/myinc.h Программа использует внешние библиотеки, добавленные мною вручную: proj/include/inc1.in proj/include/inc2.in и proj/lib/lib1.so proj/lib/lib2.so.1 Подключаю их к проекту следующим образом: add_library(lib1 SHARED IMPORTED) add_library(lib2 SHARED IMPORTED) set_property(TARGET lib1 PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/lib/lib1.so") set_property(TARGET lib2 PROPERTY IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/lib/lib2.so.1") Линкую: target_link_libraries(${PROJECT_NAME} lib1 lib2) Так же мне их надо добавить потом в `/usr/bin`: install(FILES ${PROJECT_SOURCE_DIR}/lib/lib1.so DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) install(FILES ${PROJECT_SOURCE_DIR}/lib/lib2.so.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) Затем собираю проект: `cmake . && make && sudo make install` И полностью удаляю папку proj с исходниками Однако, когда я запускаю исполняемый файл, он почему то ищет эти либы в `proj/lib/`, а не в `/usr/lib`: $ /usr/bin/app app: error while loading shared libraries: lib/lib1.so: cannot open shared object file: No such file or directory Вопрос: как заставить собранное приложение искать либы в /usr/lib? Спасибо. P.S. как то это видимо решается через RPATH, но пока что успехов никаких
0
|
|
| 21.05.2020, 16:57 | |
|
Ответы с готовыми решениями:
26
Новичок ищет пути создания бэкапа
CX_freeze ищет пути к python после сборки |
|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
| 21.05.2020, 19:51 [ТС] | |
|
Vourhey, вот его выхлоп:
Кликните здесь для просмотра всего текста
/usr/bin/cmake -E cmake_link_script CMakeFiles/daq_module_server.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/daq_module_server.dir/daq_card_callback.c.o CMakeFiles/daq_module_server.dir/daq_module_logger.c.o CMakeFiles/daq_module_server.dir/daq_module_protocol.c.o CMakeFiles/daq_module_server.dir/daq_card_operations.c.o CMakeFiles/daq_module_server.dir/daq_emulator_operations.c.o CMakeFiles/daq_module_server.dir/main.c.o -o build/daq_module_server -Wl,-rpath,/home/ermvad/signal-processing/data-acquisition-device/or-data-acquisition-device/lib: -luv lib/libpci_dask2k64.so.1 lib/libiniparser.so.1
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 22.05.2020, 15:05 | |
|
Че-то, rpath не пробрасывается у тебя
0
|
|
|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
| 22.05.2020, 15:16 [ТС] | |
|
Vourhey, у ldd выхлоп такой:
Кликните здесь для просмотра всего текста
linux-vdso.so.1 (0x00007ffc2c9d0000)
libuv.so.1 => /lib/x86_64-linux-gnu/libuv.so.1 (0x00007f25ad7d2000) lib/libpci_dask2k64.so => not found libiniparser.so.1 => /usr/lib/libiniparser.so.1 (0x00007f25ad7cc000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f25ad5da000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f25ad5b7000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f25ad5b1000) /lib64/ld-linux-x86-64.so.2 (0x00007f25ad81a000) Как бы libiniparser линкуется как надо, а вот libpci_dask2k64 неа. При том что обе существуют в /usr/lib и в /lib: Кликните здесь для просмотра всего текста
libpci_dask2k64.so (libc6,x86-64) => /lib/libpci_dask2k64.so
libiniparser.so.1 (libc6,x86-64) => /lib/libiniparser.so.1 При одинаковых командах линковки на этапе компановки и этапе запуска, одна либа видна, а другая нет. Права доступа у обоих 777. Может быть проблема тупо в либе
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 22.05.2020, 15:18 | |
|
запусти команду cc ручками заменив rpath, посмотри, как будет работать.
0
|
|
|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
| 22.05.2020, 17:14 [ТС] | |
|
Vourhey,
Кликните здесь для просмотра всего текста
ermvad@huanan-intel-linux:~/proj$ sudo /usr/bin/cc daq_card_callback.c daq_module_logger.c daq_module_protocol.c daq_card_operations.c daq_emulator_operations.c main.c -o build/daq_module_server -Wl,-rpath,/usr/lib: -luv lib/libpci_dask2k64.so lib/libiniparser.so.1
ermvad@huanan-intel-linux:~/proj$ cd build ermvad@huanan-intel-linux:~/proj/build$ objdump -x daq_module_server| grep PATH RUNPATH /usr/lib:
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 22.05.2020, 17:26 | |
|
Во, теперь выглядит норм. И как, все равно не в ду-ду?
0
|
|
|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
| 22.05.2020, 18:11 [ТС] | |
|
Vourhey, Не ду-ду. Одну либу - iniparser видит без проблем, а вот вторую никак. Хотя либы импортируются и линкуются одними и теми же командами (только разыне пути). Пока что сделал копирование .so в /usr/lib через file(INSTALL libs DESTINATION /usr/lib). Такие вот дела
0
|
|
| 22.05.2020, 18:11 | |
|
Открыть исполняемый файл, если запущен конкретный файл
Включить в исполняемый файл бинарный файл C# как по сетевом пути файл раздавать в каталоге другом пути
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|