|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
Cmake: исполняемый файл ищет *.so по другому пути21.05.2020, 16:57. Показов 17089. Ответов 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# как по сетевом пути файл раздавать в каталоге другом пути
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|