Альтернативы переключателю --sysroot в gcc? - PullRequest
11 голосов
/ 04 июня 2010

Переключатель --sysroot полезен, когда вы не хотите, чтобы заголовки / библиотеки в стандартных путях влияли на вашу сборку.

--sysroot=dir: использовать dir в качестве логического корневого каталога для заголовков и библиотеки. Например, если Компилятор обычно будет искать заголовки в / usr / include и библиотеках в / usr / lib он будет искать dir / usr / include и dir / usr / lib. [ссылка]

Может ли то же самое быть достигнуто с помощью переменных среды, файла gcc specs или любых других методов, которые не требуют переключателей командной строки?

Ответы [ 2 ]

8 голосов
/ 05 июня 2010

Если вы можете использовать переменные окружения, вы можете добавить --sysroot к CFLAGS.

3 голосов
/ 06 марта 2013

Вы можете создать скрипт-обертку для gcc, который будет выполнять фактический gcc с нужными вам флагами. Это работает с Make-файлами и сложными сборками, которые связываются с переменными окружения. Вам нужно только убедиться, что ваш скрипт gcc находится в PATH раньше, чем фактический двоичный файл gcc. Сам скрипт всего в две строки,

#!/bin/sh
exec /usr/bin/gcc --sysroot=/your/sysroot "$@"

и если $HOME/bin находится на ранней стадии PATH, вы можете поместить скрипт в $HOME/bin, и это не повлияет на других пользователей.

Если у вас есть сценарий configure, который явно ищет gcc в /usr/bin/, вам может потребоваться переименовать /usr/bin/gcc в /usr/bin/gcc.bin и назвать свой сценарий /usr/bin/gcc. Это повлияет на всех пользователей. Если вам это нужно, но вы хотите, чтобы это влияло только на определенного пользователя или пользователей, используйте

#!/bin/sh
[ "$(id -un)" -eq "theuser" ] && exec /usr/bin/gcc.bin --sysroot=/your/sysroot "$@"
exec /usr/bin/gcc.bin "$@"

Вы можете делать варианты, например, определенные учетные записи пользователей или членство в группах для установки определенного sysroot по той же схеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...