|
9 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 98
|
|
Cmake: исполняемый файл ищет *.so по другому пути21.05.2020, 16:57. Показов 16688. Ответов 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 | |
|
Помогаю со студенческими работами здесь
27
Открыть исполняемый файл, если запущен конкретный файл
Включить в исполняемый файл бинарный файл C# как по сетевом пути файл раздавать в каталоге другом пути
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|