Я пытаюсь создать полностью обновленную среду gcc ... в основном gcc 4.6.3 и binutils 2.22. Не довольно старый gcc 4.2.1 (llvm), который поставляется с Xcode 4.2.1. Моя проблема не в компиляции (по крайней мере, пока). Я могу скомпилировать binutils, gcc и то и другое одновременно. Однако каждый раз, когда я пытаюсь скомпилировать, я обнаруживаю, что в конце вывода configure появляется что-то вроде этого.
проверка, где найти целевой объект ar ... только что скомпилированный
проверка, где найти цель как ... инструмент хоста
проверка, где найти целевой cc ... только что скомпилированный
проверка, где чтобы найти целевой c ++ ... только что скомпилированный
проверка, где найти целевой c ++ для libstdc ++ ... только что скомпилированный
проверка, где найти целевой dlltool ... только что скомпилированный
проверка где чтобы найти целевой gcc ... только что скомпилированный
проверка, где найти целевой gcj ... только что скомпилированный
проверка, где найти целевой gfortran ... только что скомпилированный
проверка, где найти целевой инструмент gccgo ... host
проверка, где найти целевой ld ... host инструмент
проверка, где найти целевой липо ... инструмент хоста
проверка, где найти цель nm ... только что скомпилировано
проверяет, где найти целевой объект objdump ... просто скомпилировано
проверяет, где найти целевой ranlib ... только что скомпилировано
проверяет, где найти целевую полосу. .. просто скомпилировано
проверяет, где найти целевой windres ... только что скомпилировано
проверяет, где найти целевой windmc ... только что скомпилировано
Я сделал символические ссылки для ld, opcodes, bfd, gas, gprof и binutils в исходной папке gcc, чтобы получить этот вывод ... (если это поможет)
Как видите, я могу получить "только что скомпилированную" версию большинства программ, потому что я просто не могу понять, как скомпилировать as и ld. Я прочитал файл README в папке ld (которая находится в пакете binutils), и он говорит, что нужно выполнить:
сделать all-ld
Я делаю, и поскольку я уже "сделал" источник, он говорит мне, что больше нечего делать ...
Единственное, что я могу сейчас придумать, - это временно изменить свой путь, чтобы не включать ld. Это было бы довольно просто ...
иначе быстрая проверка с
где ld
в любом случае, сразу после того, как я подумал об этом, я понял, что это было бы глупо, теперь мне нечего было бы связывать с gcc (или даже с новой версией ld (если бы я вообще работал))
Итак, в заключение, я пытаюсь скомпилировать новую копию ld и as ...
Факты:
- Я использую Mac OS X Lion.
- Я пытаюсь скомпилировать gcc 4.6.3, используя gcc по умолчанию, который поставляется с Mac OS X Lion (gcc 4.2.1).
- Скрипты configure, кажется, думают, что я не хочу компилировать новый компоновщик и ассемблер.
- Я успешно построил работающие gcc и binutils, но без нового компоновщика и ассемблера.
- Я пытался скомпилировать binutils и gcc с опциями --with-ld = yes и --with-gold = no, похоже, они ничего не сделали.
- Я построил 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 создаются в отдельном каталоге, который не является подкаталогом исходного каталога (как рекомендовано инструкциями по установке gcc).
- Я компилирую gcc со следующими параметрами:
../gcc-4.6.3/configure --prefix = $ PREFIX --with-gmp = $ PREFIX --with-mpfr = $ PREFIX --with-mpc = $ PREFIX --enable-testing = release --program-suffix = -4.6.3 --enable-ld = yes --enable-gold = no - В основном я следил за это руководство.
- Поскольку на моем компьютере нет другого компилятора, я вынужден использовать компилятор 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- золото и --enable-ld. Они ничего не изменили
-
The order in which I did things:
- Compile gmp.
- Установите его.
- Скомпилируйте mpfr.
- Установите его.
- Скомпилируйте mpc.
- Установите его.
- Сделайте символические ссылки на основной каталог gcc src для ld, gas, binutils, opcodes, gprof, bfd.
- Настроить gcc.
- Найдите этот «отчет о состоянии».
- Подумайте о другом способе построения ld и as.
- В этом нет ничего плохого.
- Перейти к переполнению стека.
как сказал "fazo", я никому особо не рассказываю о том, как я компилировал binutils ... так что вот оно ...
Я попробовал сначала скомпилировать gcc, а затем собрать binutils с помощью gcc, который компилировался нормально, но без ld, as или даже gold. Затем я попытался использовать компилятор llvm для сборки binutils, а затем gcc. Тоже нормально работало, но все равно ни ld, as, ни gold. Наконец, я прочитал здесь, что могу создавать символические ссылки на некоторые элементы в binutils, а gcc обнаружит и построил их ... Я сделал. и gcc нашел большинство из них (как уже говорилось ранее, я поместил символические ссылки в каталог gcc для ld, opcodes, bfd, gas, gprof и binutils). Моя настоящая проблема здесь заключается в том, что скрипт configure скомпилирует новый ассемблер и компоновщик. Кроме того, что меня сбивает с толку, так это то, что в папке README binutils говорится, что простой ./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
но я все еще не получаю ни лд, ни газа.
Любая помощь приветствуется! (также, если вам нужна информация, которую я не предоставил, просто спросите)
Благодарность... :)
long long
. В моем случае я думаю, что проблема связана с тем, что каталогgcc
создается, а затемexeclp()
пытается запустить каталог, или, возможно,cc1
в этом каталоге вместо его настроенного местоположения; что-то странное. Удачи ... здесь нет никакой полезной информации, кроме как заверить вас, что вы не одиноки. - person Jonathan Leffler   schedule 06.03.2012