Полная версия этой страницы:
Сборка arm-elf-gcc
forever failure
Mar 8 2007, 15:50
Пытаюсь собрать компилятор и на этапе компиляции libssp получаю такую ошибку:
checking for C compiler default output file name... configure: error: C compiler cannot create executables
В чём тут может быть причина ?
У меня: ОС - SuSE Linux 9.2; компилятор собирающий - gcc 3.3.4; собираемый - gcc 4.1.1;binutils - 2.17;
ключи configure: --target=arm-elf --prefix=$HOME/local --enable-interwork --enable-multilib --enable-languages="c" --with-headers=../newlib-1.15.0/newlib/libc/include
Причём, при сборке gcc версии 3.4.4 и binutils 2.15 возникала таже ошибка.
Цитата(forever failure @ Mar 8 2007, 15:50)

checking for C compiler default output file name... configure: error: C compiler cannot create executables
Ниче страшного. это стандартная ситуация. Обычно это когда ld не находит объектники crt1.a .. итд - если собирается кроскомпиллер, или другие если собираются библы для целевой платформы. Бывает это потому что обычно сборочный скрипт оперирует абсалютными путями при сборке и низнает где что лежит.
1. Смотреть что именнно линкер ненашол - см. файл лога в папке которая конфигурится и где затык произашел. там написано где он споткнулся и почему.
2. узнав что он ненашел для линковки засунутть "'это" туда где он искал.
ИЛИ
в параметрах configure указать дополнительные пути к библам которые он ненашел.
Я обычно файлы перекидываю туда где он их пытается найти - просто быстрее.
От снапшота к снапшоту подобные выкрутасы меняются множатся и многообразятся - поэтому сборка GCC это ЭскустВО!! потрахаешся и через какоето время начнеш чуствовать где унего затыки при сборке происходят. опыт на.
Без шаманства собирается только для ix86 - очень много тестеров

а вот под наших пациентов значительно меньше.
forever failure
Mar 9 2007, 08:28
По логам не находит crt0.o Теперь вопрос, где найти то, что он не нашёл т. е. этот файл?
Библиотеки пока не установлены, где он может быть ещё?
А под какой ОС компилируете?
forever failure
Mar 10 2007, 14:11
Попробовал собрать версию 3.4.6. Уже - лучше - сишный компилятор собрался, правда плюсовый собираться
всё равно отказался на этапе сборки libstdc++.
Вопрос про ось интересный - у меня SuSE Linux 9.2 как уже было выше отмечено, ядро 2.6.8-24-smp, родное, с дистрибутива, gcc - тоже родной, версия : 3.3.4 (pre 3.3.5 20040809).
В связи с этим возникло два вопроса:
1. Такого рода проблемы наблюдаются при сборке по любой осью ?
2. Есть возможность собирать под FreeBSD 6.0 или Solaris 10. Стоит попробовать ?
(честно говоря, мне бы хотелось научится решать такие проблемы в принципе, а не просто раз как-нибудь собрать, и потом забыть как это делается).
Цитата(forever failure @ Mar 10 2007, 14:11)

Попробовал собрать версию 3.4.6. Уже - лучше - сишный компилятор собрался, правда плюсовый собираться
всё равно отказался на этапе сборки libstdc++.
Вопрос про ось интересный - у меня SuSE Linux 9.2 как уже было выше отмечено, ядро 2.6.8-24-smp, родное, с дистрибутива, gcc - тоже родной, версия : 3.3.4 (pre 3.3.5 20040809).
В связи с этим возникло два вопроса:
1. Такого рода проблемы наблюдаются при сборке по любой осью ?
2. Есть возможность собирать под FreeBSD 6.0 или Solaris 10. Стоит попробовать ?
(честно говоря, мне бы хотелось научится решать такие проблемы в принципе, а не просто раз как-нибудь собрать, и потом забыть как это делается).
Проблемы будут всегда. Во всяком случае у меня поскольку собираю кроскомпиллер под MinGW(под ней мало тестися чтолибо вообще). А вот под линухом должно все влет собиратся. Наверно просто в Вашей системе КРИВО установлен пакет разработчика (tools chains), переустановите пакет и поглядите че будет.
Я ж говорил выше, что 1.смотри логи 2.правь ручками. 3.получи счасье
forever failure
Mar 11 2007, 14:27
Гугль, как всегда, рулит. Правильные ключи конфигурирования:
../gcc-3.4.6/configure --target=arm-elf --prefix=$HOME/local --enable-languages="c,c++" --enable-threads --with-newlib --enable-multilink --enable-interwork
Правда вопрос с версией 4.1.1 пока открыт.
avr-gcc(++) у меня собрался из 3.4.6 версии сразу, из 4.1.1 тоже не захотел.
v_shamaev
Mar 11 2007, 16:11
Цитата(forever failure @ Mar 11 2007, 14:27)

Гугль, как всегда, рулит. Правильные ключи конфигурирования:
../gcc-3.4.6/configure --target=arm-elf --prefix=$HOME/local --enable-languages="c,c++" --enable-threads --with-newlib --enable-multilink --enable-interwork
Правда вопрос с версией 4.1.1 пока открыт.
avr-gcc(++) у меня собрался из 3.4.6 версии сразу, из 4.1.1 тоже не захотел.
Может SUSE староват? В 10.2 gcc 4.1.1 или 4.1.2
forever failure
Mar 11 2007, 17:27
Может и староват, кстати, вполне реально. SuSE 9.2 2004 года выпуска, а компилятор ещё старше.
Пока возникла новая проблема - на этот раз, движемся дальше, - gdb.
Собираю тренировочный хелловорлд, с дебажной информацией, гружу его в arm-elf-gdb, подключаюсь в симулятор и по команде run (или start) происходит такая фигня:
/src/test> arm-elf-gdb arm.elf
GNU gdb 6.6
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(gdb) target sim
Connected to the simulator.
(gdb) break main
Breakpoint 1 at 0x8228: file test.cpp, line 6.
(gdb) run
Starting program: /home/sprog/src/test/arm.elf
warning: No program loaded.
Segmentation fault
Есть какие-нить идеи по поводу решения этой проблемы ?
vanokuten
Mar 12 2007, 01:05
Цитата(forever failure @ Mar 8 2007, 14:50)

Пытаюсь собрать компилятор и на этапе компиляции libssp получаю такую ошибку:
checking for C compiler default output file name... configure: error: C compiler cannot create executables
В чём тут может быть причина ?
У меня: ОС - SuSE Linux 9.2; компилятор собирающий - gcc 3.3.4; собираемый - gcc 4.1.1;binutils - 2.17;
ключи configure: --target=arm-elf --prefix=$HOME/local --enable-interwork --enable-multilib --enable-languages="c" --with-headers=../newlib-1.15.0/newlib/libc/include
Причём, при сборке gcc версии 3.4.4 и binutils 2.15 возникала таже ошибка.
Ребята не изобретайте велосипед!
Если arm-linux система с uCLinux тогда
http://buildroot.uclibc.org/если с glibc тогда:
http://kegel.com/crosstool/Вы еще на этапе компилера застряли - а вам еще предстоит с glibc/uclibc повозиться
Вышеупомянутые сслыки сделают все за вас
vanokuten
Mar 12 2007, 13:39
/src/test> arm-elf-gdb arm.elf
GNU gdb 6.6
Copyright © 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(gdb) target sim
Connected to the simulator.
(gdb) break main
Breakpoint 1 at 0x8228: file test.cpp, line 6.
(gdb) run
Starting program: /home/sprog/src/test/arm.elf
warning: No program loaded.
Segmentation fault
-------------------------------------------------------
Используйте skyeye!!!
forever failure
Mar 12 2007, 18:28
Собрал gdb 6.5 версии. Симптомы исчезли, сейчас более детально смотрю на предмет возможных глюков.
В общем, продвигаемся дальше, полёт нормальный.
ЗЫ. Мосье Ванокутен, Ваши рекомендации выглядят несколько невпопад, читайте внимательно тему.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.