Переопределение директории компилятора gmake - PullRequest
2 голосов
/ 21 ноября 2011

Есть ли способ указать gmake альтернативный каталог компилятора. то есть: у меня установлено несколько компиляторов, и я пытаюсь использовать альтернативный gcc во время компиляции.

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

gmake CC=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc 
    CXX=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/g++ 
    LD=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc 
    AR=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ar 

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

gmake COMPILER_DIR=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/

это также может быть вопросом кросс-компилятора.

Ответы [ 3 ]

0 голосов
/ 03 декабря 2011

Просто для дальнейшего использования, вот как подсказывает ChainKit для кросс-инструмента. Способ 1 Вместо использования complete /opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ используйте PATH=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin, а в файлах make сохраните CC=$(CROSSCOMPILERVERSION)gcc, где CROSSCOMPILERVERSION=i686-unknown-linux-gnu, так или иначе, эта установка работает лучше, но пока не знаете, как.

Способ 2 Используйте путь, как предложено в method.1, но дополнительно создайте softlink в crosstool bin dir. как в /opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin добавить мягкую ссылку i686-unknown-linux-gnu-gcc как gcc. Это проще, чем изменить make-файл (или если у вас нет прав на изменение make-файла)

0 голосов
/ 03 декабря 2011

При сборке binutils и gcc они устанавливаются по двум разным путям:

  • bin/PREFIX-gcc
  • PREFIX/bin/gcc

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

В вашем примере уже используется вторая форма: /opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/ar вместо /opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ar (которая, вероятно, также существует в вашей системе).

Таким образом, вы можете создавать сPATH=/opt/crosstool/gcc-3.2.2-glibc-2.2.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/:$PATH make ... и теперь по умолчанию gcc будет кросс-версия.

0 голосов
/ 21 ноября 2011

В make-файле вы можете использовать что-то вроде этого:

CC = $(COMPILER_DIR)gcc

Если вы не определите COMPILER_DIR, тогда будет использоваться обычная система gcc, в противном случае из вашего каталога.

...