Подготовить к RPATH

csl

После сборки с помощью CMake в Linux (но перед установкой) все связанные библиотеки добавляются в конечный исполняемый файл RPATH.

Однако я хотел бы добавить $ORIGIN/../lib: к этому RPATH.

Пока мне удалось заменить только RPATH, и это не то, что я хочу: я хочу ld.soсначала посмотреть ../lib. Вот чем я сейчас занимаюсь:

set_target_properties(foo PROPERTIES
  BUILD_WITH_INSTALL_RPATH TRUE
  INSTALL_RPATH "\$ORIGIN/../lib:...")

Хотя это работает, в нем отсутствуют некоторые дополнительные сторонние библиотеки, которые не являются частью моего дерева сборки и которые не находятся в системных каталогах.

Выполнение chrpath -l fooдает мне то же самое, что и INSTALL_RPATHвыше. Если я не устанавливаю эти свойства, я получаю длинный список местоположений DSO, например, RPATH=/bar/baz/:/quux/и т. Д. (Тот, который я хотел бы добавить в начало).

Я пробовал использовать get_property(_existing_rpath foo INSTALL_RPATH), но это дает мне пустую строку

Я прочитал подсказки на https://cmake.org/Wiki/CMake_RPATH_handling и заметил в разделе «Ошибки CMake», что

По крайней мере, в CMake 2.6.4 RHEL5 команда man cmakecommands для INSTALL_RPATH_USE_LINK_PATH делает вид, что этот параметр добавляет путь ссылки к любому указанному содержимому CMAKE_INSTALL_RPATH. Однако в этой версии включение INSTALL_RPATH_USE_LINK_PATH заменит его.

Что ж, в этом я уже не уверен: только что проверил это на CMake 2.8.0, и теперь в обеих версиях перечислены правильные изменения в cmake_install.cmake. Эта ошибка могла возникнуть из-за того, что ранее не выполнялась установка для каждой цели, или, возможно, из-за некоторых других изменений в переменных, связанных с CMake RPATH.

Между прочим, меня интересует только рабочий RPATH для собранных файлов, как до запуска install. Я не настроил установку должным образом (добавил цели установки и т. Д.). Мне нужно изучить эту часть, чтобы это сработало?

csl

Если вы не можете найти ответы в Google, часто ответ очевиден. Кажется, это работает нормально:

set_target_properties(foo PROPERTIES
  BUILD_WITH_INSTALL_RPATH TRUE
  INSTALL_RPATH_USE_LINK_PATH TRUE
  INSTALL_RPATH "\$ORIGIN/../lib:${INSTALL_RPATH}")

В моей системе (и CMake 3.6.1) кажется, что он INSTALL_RPATHначинается с двоеточия, но я бы не стал на это рассчитывать. Кроме того, поскольку я, очевидно, устанавливаю здесь глобальное значение INSTALL_RPATH , оно может быть завышено (я не проверял).

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Могу ли я изменить 'rpath' в уже скомпилированном двоичном файле?

Установка rpath для зависимостей зависимостей?

Получение предупреждения из анализа безопасности "Удалите параметр компилятора -rpath, чтобы удалить @rpath"

CMake: добавить пакеты в rpath

Изменить путь поиска для разделяемой библиотеки на rpath, предоставленный в Makefile

Как установить RPATH в CMAKE?

правильное использование rpath (относительное vs абсолютное)

Рекурсивный RPATH в macOS

Как я могу установить rpath на двоичные файлы gcc во время начальной загрузки?

Как кодировать расположение исполняемого файла в Linux rpath?

Есть ли способ проверить текущий rpath в Linux?

использовать RPATH, но не RUNPATH?

Зачем нужен -L при использовании -rpath?

CMAKE RPATH не работает - не удалось найти файл общих объектов

Несмотря на то, что установлен rpath, одна dll не найдена

Создание простого (привет-мир) примера использования опции ld -rpath с $ ORIGIN

Относительные RPATH при сборке проекта conan / cmake на MacOS

rpath в LDFLAGS для CMAKE

rpath in LDFLAGS for CMAKE

Какие рекомендуемые параметры компоновщика GNU для указания $ ORIGIN в RPATH?

Как установить RPATH и RUNPATH с GCC / LD?

Удалите жестко запрограммированный rpath из исполняемого файла c в Makefile

Я не понимаю -Wl, -rpath -Wl,

Зачем ld требуется -rpath-link при связывании исполняемого файла с a, так что ему нужен другой?

Динамическое связывание с rpath не работает в Ubuntu 17.10

В чем разница между `-rpath-link` и` -L`?

Cocoapods dyld: библиотека не загружена @rpath Изображение не найдено

Как правильно включить аргумент компоновщика -Wl, -rpath, $ ORIGIN в Makefile?

Qt: Linking Framework на Mac: использование rpath

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл