Не получается заставить gcc или binutils создать новый компоновщик или ассемблер - PullRequest
5 голосов
/ 06 марта 2012

Я пытаюсь настроить совершенно новую и актуальную среду gcc ... в основном gcc 4.6.3 и binutils 2.22.Не довольно старый gcc 4.2.1 (llvm), который поставляется с Xcode 4.2.1.Моя проблема не с компиляцией (на данный момент, по крайней мере).Я могу скомпилировать binutils, gcc, и оба одновременно отлично.Однако каждый раз, когда я пытаюсь скомпилировать, я нахожу что-то подобное в конце вывода команды configure

, где проверяется, где найти целевой файл ... только что скомпилированныйпроверка, где найти цель как ... инструмент хостапроверка, где найти целевой cc ... только что скомпилированныйпроверка, где найти цель c ++ ... только что скомпилированпроверка, где найти цель c ++ для libstdc ++ ... только что скомпилированапроверка, где найти целевой dlltool ... только что скомпилированныйпроверка, где найти целевой gcc ... только что скомпилированпроверка, где найти цель gcj ... только что скомпилированапроверка, где найти цель gfortran ... только что скомпилированпроверка, где найти целевой gccgo ... инструмент хостапроверка, где найти целевой инструмент ld ... hostпроверка, где найти целевой lipo ... host toolпроверка, где найти цель нм ... только что скомпилированпроверка, где найти цель objdump ... только что скомпилированпроверка, где найти целевой ranlib ... только что скомпилированпроверка, где найти целевую полосу ... только что скомпилированапроверка, где найти цель windres ... только что скомпилированпроверка, где найти целевой windmc ... только что скомпилирован

Я создал символические ссылки для ld, opcodes, bfd, gas, gprof и binutils в исходной папке gcc, чтобы получить этот вывод ... (если это поможет)

КакВы можете видеть, что я могу получить "только что скомпилированную" версию большинства программ, но я просто не могу понять, как компилировать как и ld.Я прочитал файл README в папке ld (которая находится в пакете binutils) и там написано:

make all-ld

Я делаю и являюсьчто я уже «сделал» источник, он говорит мне, что ничего не осталось сделать ...

Единственное, о чем я могу думать сейчас, это временно изменить мой путь, чтобы он не включал ld.Это было бы довольно легко ...

иначе быстрая проверка с

whereis ld

в любом случае, сразу после размышления об этом я понял, что это будетглупо быть сейчас, мне нечем связать gcc (или даже новую версию ld (если я вообще смогу работать))

Итак, в заключение я пытаюсь скомпилировать новую копию ld икак... Факты:

  • Я использую Mac OS X Lion.
  • Я пытаюсь скомпилировать gcc 4.6.3используя gcc по умолчанию, который поставляется с Mac OS X Lion (gcc 4.2.1).
  • Сценарии конфигурации, кажется, думают, что я не хочу компилировать новый компоновщик и ассемблер.
  • У меня естьуспешно собрал работающие gcc и binutils, но без нового компоновщика и ассемблера.
  • Я попытался скомпилировать binutils и gcc с помощью --with-ld = yes и --with-gold= нет опции, они, похоже, ничего не делают.
  • Я собрал gmp v5.0.4, mpfr v3.1.0 и mpc v0.9, используя gcc v4.2.1, установив их в том же префиксе, что и при использованиив настройках gcc и binutils.
  • Для каждой конфигурации я явно указываю расположение gmp, mpfr и mpc.
  • Я создал gmp, mpfr и mpc отдельно от gcc (делая так, приводил к некоторым ошибкам сборки).
  • gcc, binutils, gmp, mpfr и mpc - все они собраны в отдельном каталоге, который неt подкаталог исходного каталога (как рекомендуется в инструкциях по установке gcc).
  • Я собираю gcc со следующими параметрами:../gcc-4.6.3/configure --prefix = $ PREFIX --with-gmp = $ PREFIX --with-mpfr = $ PREFIX --with-mpc = $ PREFIX --enable-check = release --program-suffix = -4.6.3 --enable-ld = да --enable-gold = нет
  • Я в основном следовал этому уроку .
  • Поскольку у меня нет другого компилятора на моем компьютере, я вынужден использовать компилятор llvm по умолчанию для Mac OS X (то, что я описал ранее как gcc 4.2.1), который я читаю здесь не работает, однако на моем компьютере нет gcc-4.2.
  • Компиляция gcc-4.7.0 (самый последний снимок) с использованием только что скомпилированной новой версии gcc (gcc-4.6.3) приводит к ошибкам компилятора (я устанавливаю переменные окружения CC и CXX).
  • Сначала я попытался скомпилировать gcc, чем binutils, и наоборот, в конце концов я решил, что собирать gcc с binutils - это путь. Вывод выше вас был с обоими скомпилированными сразу
  • Я прочитал этот небольшой пост о золоте и попытался добавить --enable-gold и --enable-ld. Они ничего не изменили
  • Порядок, в котором я делал вещи:
    1. Скомпилируйте gmp.
    2. Установите это.
    3. Скомпилируйте mpfr.
    4. Установите это.
    5. Скомпилируйте mpc.
    6. Установите это.
    7. Создайте символические ссылки на основной каталог gcc src для ld, gas, binutils, opcodes, gprof, bfd.
    8. Настройте gcc.
    9. Найдите этот «отчет о состоянии».
    10. Подумайте о другом способе создания ld и как.
    11. Сбой в этом.
    12. Перейти на переполнение стека.

как сказал "fazo", я никому особо не рассказываю о том, как я скомпилировал binutils ... так что вот оно ...

Сначала я попытался скомпилировать gcc, а потом собрать binutils, используя gcc, который компилировался нормально, но не ld, as или даже gold. Затем я попытался использовать компилятор llvm для сборки binutils, а затем gcc. Он тоже работал нормально, но все равно ни ld, ни, ни золото. Наконец, я прочитал здесь , что я мог сделать символические ссылки на некоторые элементы в binutils, а gcc обнаружил бы и собрал их ... Я сделал. и gcc обнаружил большинство из них (как указано выше, я поместил символические ссылки в каталог gcc для ld, opcodes, bfd, gas, gprof и binutils). Моя настоящая проблема заключается в том, чтобы сказать скрипту configure, что нужно скомпилировать новый ассемблер и компоновщик. Также меня поражает то, что в папке binutils README написано, что простая ./configure make make install соберет и установит все инструменты, я пытаюсь выяснить, почему это не так.

Последняя команда выглядит так: ../binutils-2.22/configure --prefix = $ PREFIX --with-gmp = $ PREFIX --with-mpfr = $ PREFIX --with-mpc = $ PREFIX --program-суффикс = -4.6.3 - enable-ld --with-gnu-as --with-gnu-ld

все же я все еще не получаю ни лд, ни газа.

Любая помощь очень ценится! (также, если вам нужна информация, которую я не предоставил, просто спросите)

спасибо ...:)

Ответы [ 3 ]

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

Afaik со стандартными сборками (configure; make), результаты называются по-разному. газ новый и gld новый или около того.

Обратите внимание, что OS X обычно не использует binutils, а собственный компоновщик Mach-O от Apple (cctools). Даже если вам это удастся, это может не привести к работоспособному решению

1 голос
/ 29 августа 2018

Binutils не поддерживает ассемблер или компоновщик в OS X, см. Сценарий binutils configure:

case "${target}" in
  *-*-chorusos)
    ;;
  aarch64-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  arm-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  powerpc-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  i[3456789]86-*-darwin*)
    noconfigdirs="$noconfigdirs ld gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  x86_64-*-darwin[912]*)
    noconfigdirs="$noconfigdirs ld gas gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;
  *-*-darwin*)
    noconfigdirs="$noconfigdirs ld gas gdb gprof"
    noconfigdirs="$noconfigdirs sim target-rda"
    ;;

Для любой цели darwin (то есть OS X) это добавляет ld иgas в список noconfigdirs.Это означает, что эти каталоги будут пропущены во время сборки.

Для сборки GCC в OS X вам нужно использовать собственный ассемблер и компоновщик OS X (которые являются частью пакета «Инструменты командной строки Xcode», изApp Store).

1 голос
/ 20 марта 2012

Я понял, что это в основном проблема Mac.После установки и получения Ubuntu он прекрасно скомпоновал компоновщик и ассемблер ... по-прежнему возникают проблемы с компиляцией gcc, но это из-за новой поддержки мультиархитектуры Debian ... но это еще одна проблема ... Спасибо за вашу помощьМарко ван де Воорт

...