Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сборка arm-elf-gcc
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
forever failure
Пытаюсь собрать компилятор и на этапе компиляции 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 возникала таже ошибка.
klen
Цитата(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 - очень много тестеров smile.gif а вот под наших пациентов значительно меньше.
forever failure
По логам не находит crt0.o Теперь вопрос, где найти то, что он не нашёл т. е. этот файл?
Библиотеки пока не установлены, где он может быть ещё?
klen
А под какой ОС компилируете?
forever failure
Попробовал собрать версию 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. Стоит попробовать ?
(честно говоря, мне бы хотелось научится решать такие проблемы в принципе, а не просто раз как-нибудь собрать, и потом забыть как это делается).
klen
Цитата(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.получи счасье smile.gif
forever failure
Гугль, как всегда, рулит. Правильные ключи конфигурирования:
../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
Цитата(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
Может и староват, кстати, вполне реально. 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
Цитата(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
/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
Собрал gdb 6.5 версии. Симптомы исчезли, сейчас более детально смотрю на предмет возможных глюков.
В общем, продвигаемся дальше, полёт нормальный.

ЗЫ. Мосье Ванокутен, Ваши рекомендации выглядят несколько невпопад, читайте внимательно тему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.