Как заставить RPATH с $ORIGIN работать над Кодом:: Блоки GCC?

Передача '' не означает возврата к значению аргумента по умолчанию. Это просто означает, что вы пытаетесь передать пустую строку.

Вам нужно будет воспроизвести значения по умолчанию, если вы хотите добиться этого:

htmlspecialchars('&amp', ENT_COMPAT | ENT_HTML401, ini_get('default_charset'), FALSE);
17
задан kbluck 23 October 2008 в 17:43
поделиться

2 ответа

Кто бы ни решил сделать маркерный $ORIGIN, злой ублюдок, который заслуживает специального места в аду программиста. Так как '$' является специальным символом для удара, и другим языкам сценариев нравится, делают, он завинчивает все, если тщательно не оставлено. Еще хуже, в зависимости от которой среды сборки Вы используете, специфические особенности того, как выйти правильно, вероятно, изменятся.

В ударе, необходимо засунуть обратную косую черту перед $:

-Wl,-R\$ORIGIN

Код:: Блоки, по-видимому, также рассматривают $ как особенный. Затем безотносительно Кода контроллера подпроцесса:: Блоки отправляют команду в обработки обратная косая черта как особенную. Так, и обратная косая черта и $ должны быть согнуты, чтобы быть оставленными правильно. Поэтому в Коде:: настройки компоновщика Блоков, необходимо указать:

-Wl,-R\\$ORIGIN

..., который выводы:

-Wl,-R\\$ORIGIN

... к журналу сборки, но оболочке на самом деле отправляется:

-Wl,-R\$ORIGIN

..., который, как упомянуто выше приводит к желаемому результату.

, Что боль.

35
ответ дан 30 November 2019 в 10:39
поделиться

В дополнение к ответу kblucks, который затрагивает вопрос для кода: блоки .... Для тех, кто, как я, наткнулся на эту страницу в поисках того, как это сделать с помощью Make. Уловка состоит в том, чтобы использовать дополнительный знак $ в качестве escape-символа и заключить его в кавычки:

-Wl,-R,'$$ORIGIN/../lib'

Полное объяснение можно найти здесь: Using ORIGIN for a dynamic runtime library search path

15
ответ дан 30 November 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: