Как собрать самодостаточный набор gcc / glibc / binutils по нестандартному пути?

2417
netvope

Предположим, что набор пользовательских встроенных gcc/glibc/binutilsв $prefix(например /home/user/path)

Я хочу:

  1. gccискать библиотеки в $prefix/lib64вместо/lib64
  2. gccискать заголовки $prefix/includeвместо/include
  3. использовать $prefix/lib64/ld-linux-x86-64.so.2в качестве (жестко запрограммированного) пути загрузчика вместо/lib64/ld-linux-x86-64.so.2
  4. динамический загрузчик для поиска общих библиотек $prefix/lib64вместо/lib64

Как мне настроить сборки? Нужно ли изменять gccфайл спецификаций или делать что-то еще?

6

1 ответ на вопрос

2
whitequark

Попробуйте использовать crosstool-ng . Это очень хороший скрипт, который собирает инструментарий с интерфейсом Kconfig (как в ядре Linux). Он позволяет вам сконфигурировать практически все в наборе инструментов, и в нем есть нужные вам настройки.

Однажды я сделал с ним набор инструментов arm-gnueabi, и он работает в любом каталоге, в который я распаковал .tbz2.

К сожалению, он пока не поддерживает создание кросс-нативной (`build! = Host == target`) цепочки инструментов. netvope 14 лет назад 0
AFAIK нет других подобных утилит, которые поддерживают x86_64 (http://elinux.org/Toolchains#Toolchain_building_systems хороший обзор). Вы можете попробовать просто собрать цепочку инструментов, как обычно, но для всех установите опцию `--prefix $ prefix`. (Я думаю, что процесс создания цепочки инструментов слишком сложен, чтобы описывать его здесь, но уловка с `--prefix` сработала для меня. Конечно, это намного сложнее, чем использование` crosstool-ng`, и вам уже нужен другой кросс-цепочки. ) whitequark 14 лет назад 0