Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сборка ToolsChain
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Troll
Доброго дня.

Решил собрать GNU инструментарий. (знаю, что есть готовые сборки)

скачал исходники gcc и binutils.

Шаг первый это сборка binutils.
Binutils ver 2.19
Компилятор MinGW32 ver 3.4.2.
make ver 3.81
minGW-make ver 3.80
sh ver 2.04

при запуске скрипта конфигурации создается makefile, но при запуске утилиты make получаю ошибки, которые описаны ниже.
Насколько я понимаю не удается изменить каталог и выполнить заданные команды. Подскажите в чем может быть ошибка.

Заранее спасибо.

В прикрепленном файле лог скрипта конфигурации и созданный makefile.

Последовательность действий:
В оболочке выполняю
команда:
CC=mingw32-gcc ./configure
результат:
... много текста ...
configure: creating ./config.status
config.status: creating Makefile

команда:
make
результат:
make[1]: Entering directory `E:/GCC_Tools/binutils-2.19/binutils-2.19'
make[2]: Entering directory `E:/GCC_Tools/binutils-2.19/binutils-2.19'
...
make[213]: Entering directory `E:/GCC_Tools/binutils-2.19/binutils-2.19'
make[213]: *** [all] Error -1073741502
make[213]: Leaving directory `E:/GCC_Tools/binutils-2.19/binutils-2.19'
make[212]: *** [all] Error 2
...
make[1]: Leaving directory `E:/GCC_Tools/binutils-2.19/binutils-2.19'
make: *** [all] Error 2

если использовать команду:
mingw32-make
результат:
e:\mingw\bin\mingw32-make.exe[1]: Entering directory `E:/GCC_Tools/binutils-2.19
/binutils-2.19'
/usr/bin/sh: C: command not found
/usr/bin/sh: C:/Tools/Dev-Cpp/utils/Tools/Dev-Cpp/utils/bin/sh.exe: No such file
or directory
e:\mingw\bin\mingw32-make.exe[1]: *** [configure-libiberty] Error 127
e:\mingw\bin\mingw32-make.exe[1]: Leaving directory `E:/GCC_Tools/binutils-2.19/
binutils-2.19'
e:\mingw\bin\mingw32-make.exe: *** [all] Error 2
klen
Цитата(Troll @ Feb 3 2009, 11:39) *
CC=mingw32-gcc ./configure
результат:
[b]


трудно сказать..
смущает "CC=mingw32-gcc ./configure"

1. попробуйте "./configure CC=mingw32-gcc"
шел первый аргумент анализирует как команду/имя файла бинаря/имя sh-скрипта, а остальные как параметры. у вас наоборот

2. судя по всему Вы сонфигурите и собираете в директории с исходниками - "./configure", так делать нельзя, сделайте отдельную рабочую папку для сборки и там конфигурите и собирайте.
Troll
Цитата(klen @ Feb 3 2009, 15:06) *
1. попробуйте "./configure CC=mingw32-gcc"
шел первый аргумент анализирует как команду/имя файла бинаря/имя sh-скрипта, а остальные как параметры. у вас наоборот


Попробовал, результат аналогичный.
alx2
Цитата(klen @ Feb 3 2009, 14:06) *
смущает "CC=mingw32-gcc ./configure"

1. попробуйте "./configure CC=mingw32-gcc"
шел первый аргумент анализирует как команду/имя файла бинаря/имя sh-скрипта, а остальные как параметры. у вас наоборот
Неверно.
Цитата
1. Leading words of the form ``name=value'' are stripped off and
assigned to the environment of the simple command.
Такое поведение - это AFAIK POSIX-стандарт. А вот если поменять эти элементы в командной строке местами, то "CC=mingw32-gcc" будет интерпретироваться шеллом как аргумент команды ./configure, и никакого присваивания переменной окружения выполнено не будет:
Код
alx% cat test.sh
#!/bin/sh
echo $CC
alx% CC=blablabla ./test.sh
blablabla
alx% ./test.sh CC=blablabla

alx%

Цитата(klen @ Feb 3 2009, 14:06) *
2. судя по всему Вы сонфигурите и собираете в директории с исходниками - "./configure", так делать нельзя, сделайте отдельную рабочую папку для сборки и там конфигурите и собирайте.
Почему это нельзя? Кто сказал? В README сказано обратное. Согласно доке, собирать надо именно в директории с исходниками...
Troll
Не думаю, что дело в переменной окружения $CC.
Даже если запускать без явного присваивания СС, все равно выбирается компилятор mingw32 (пути прописаны только к нему).
К тому же скрипт проверяет компилятор и версию.

/usr/bin/sh: C: command not found
Что за команда С?

/usr/bin/sh: C:/Tools/Dev-Cpp/utils/Tools/Dev-Cpp/utils/bin/sh.exe: No such file or directory
SHELL находится в директории "с:/Tools/Dev-Cpp/utils/bin/".
make ищет SHELL не в той директории?

В логе конфигурации смущает несколько вещей:

/usr/bin/uname -p = unknown
/bin/uname -X = unknown

/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown

Может какие-либо из этих переменных должны быть обязательно определены?

Далее в логе:
..............................
configure:3738: gcc -c -g -O2 conftest.c >&5
conftest.c:2: error: syntax error before "me"
configure:3744: $? = 1
configure: failed program was:
| #ifndef __cplusplus
| choke me
| #endif
.................................
configure:4190: g++ -c -g -O2 conftest.cc >&5
conftest.cc: In function `int main()':
conftest.cc:13: error: `exit' undeclared (first use this function)
conftest.cc:13: error: (Each undeclared identifier is reported only once for each function it appears in.)
configure:4196: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| /* end confdefs.h. */
|
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
....................
amw
Цитата(Troll @ Feb 4 2009, 06:05) *
Не думаю, что дело в переменной окружения $CC.
Даже если запускать без явного присваивания СС, все равно выбирается компилятор mingw32 (пути прописаны только к нему).
К тому же скрипт проверяет компилятор и версию.

/usr/bin/sh: C: command not found
Что за команда С?

/usr/bin/sh: C:/Tools/Dev-Cpp/utils/Tools/Dev-Cpp/utils/bin/sh.exe: No such file or directory
SHELL находится в директории "с:/Tools/Dev-Cpp/utils/bin/".
make ищет SHELL не в той директории?

Я не особо разбираюсь в тонкостях Windows, но пару раз приходилось пользоваться mingw.
Думаю нужно учесть что:
1. Нужно запускать из MSYS шела, а не из терминала Windows (cmd.exe).
2. Символ двоеточие в unix-like это разделитель в списках, например PATH=/bin:/usr/bin. Вот он на Ваш C:/Tools и ругается.
3. Все нужно делать из шела, используя правильные unix-like пути т.е. без имени диска, а от корня в MSYS. В cygwin для этого есть /cygdrive/c/ а как в mingw - не знаю.
4. А тот-же winarm делает свои патчи, чтобы оно под mingw собиралось?

Цитата(Troll @ Feb 4 2009, 06:05) *
/usr/bin/uname -p = unknown
/bin/uname -X = unknown

/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown

/usr/bin/uname -a
Не представляю, как еще uname может выглядеть на Windows, кроме unknown.
Хотя в cygwin uname -a выводит в каком-то поле cygwin, а у Вас тогда может быть где-то mingw32.
Видимо что-то недоинсталировано?
Troll
Цитата(amw @ Feb 4 2009, 18:07) *
Видимо что-то недоинсталировано?
Точно недоинсталировано - MSYS. laughing.gif

Теперь все замечательно собирается.

Цитата(klen @ Feb 3 2009, 15:06) *
2. судя по всему Вы сонфигурите и собираете в директории с исходниками - "./configure", так делать нельзя, сделайте отдельную рабочую папку для сборки и там конфигурите и собирайте.
Создал директорию и запускал из нее. Конфигурация проходит нормально, а при сборке выводятся ошибки. Ищет файлы относительно текущей директории и соответственно не находит.
Как правильно сконфигурить, чтобы результат помещался в указанную мною директорию?
amw
Цитата(Troll @ Feb 12 2009, 06:49) *
Как правильно сконфигурить, чтобы результат помещался в указанную мною директорию?

Обычно так
Код
$ mkdir src
$ cd src
$ tar jxvf /path/to/source/gcc-x.y.x.tar.bz
$ cd ..
$ mkdir build
$ cd build
$ ../src/gcc-x.y.x/configure blah-blah-blah
Troll
Цитата(amw @ Feb 12 2009, 17:58) *
Обычно так
Код
$ mkdir src
$ cd src
$ tar jxvf /path/to/source/gcc-x.y.x.tar.bz
$ cd ..
$ mkdir build
$ cd build
$ ../src/gcc-x.y.x/configure blah-blah-blah

Примерно тоже самое написано и в binutils/readme, но "Обычно" не получалось...

При сборке в директории отличной от ./ сборка завершалась с ошибкой, что-то типа не может работать с makeinfo и все тут.

После конфигурации в makefile определялась строка MAKEINFO = /путь к исходникам/missing makeinfo.
Заменил на строку MAKEINFO = makeinfo и сборка прошла успешно.

Хотя не понятно, почему не работает. Если конфигурацию запускать из каталога с исходниками, строчка "MAKEINFO = /путь к исходникам/missing makeinfo" в makefile присутствует, но сборка проходит нормально.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.