Я работаю над встроенным проектом, который состоит из моего собственного кода, а также сторонних библиотек и исполняемых файлов.Чтобы построить все части последовательно, я написал скрипт, который устанавливает переменные среды для кросс-компиляции (CC, CXX, CFLAGS и т. Д.).Среди прочего он устанавливает LDFLAGS для передачи флага rpath компоновщику.Значение rpath содержит маркер $ORIGIN
, который не должен быть расширен и должен просматриваться компоновщиком и записываться в выходной двоичный файл как есть.Затем я создаю несколько необходимых сторонних проектов, используя среду, установленную сценарием.В проектах используются разные системы сборки (возможно, make, CMake, другие).Из-за этого и, возможно, из-за сценариев сборки, написанных по-разному, знак доллара расширяется по-разному.То есть, что бы я ни пытался избежать, я получаю разные результаты в разных проектах (например, $$ ORIGIN, RIGIN, пустая строка), но мне никогда не удавалось получить одинаковое значение $ORIGIN
во всех двоичных файлах.Есть ли универсальный способ избежать знака доллара, чтобы он работал одинаково по крайней мере в make и shell, но в любой комбинации?