реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> сборка ToolsChain
Troll
сообщение Feb 3 2009, 08:39
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Доброго дня.

Решил собрать 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

Прикрепленные файлы
Прикрепленный файл  binutils.rar ( 36.63 килобайт ) Кол-во скачиваний: 27
 


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 3 2009, 09:06
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(Troll @ Feb 3 2009, 11:39) *
CC=mingw32-gcc ./configure
результат:
[b]


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

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

2. судя по всему Вы сонфигурите и собираете в директории с исходниками - "./configure", так делать нельзя, сделайте отдельную рабочую папку для сборки и там конфигурите и собирайте.
Go to the top of the page
 
+Quote Post
Troll
сообщение Feb 3 2009, 10:02
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



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


Попробовал, результат аналогичный.

Сообщение отредактировал Troll - Feb 3 2009, 10:04


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
alx2
сообщение Feb 3 2009, 13:30
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(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 сказано обратное. Согласно доке, собирать надо именно в директории с исходниками...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Troll
сообщение Feb 4 2009, 04:05
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Не думаю, что дело в переменной окружения $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;
| }
....................


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 4 2009, 12:07
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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.
Видимо что-то недоинсталировано?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Troll
сообщение Feb 12 2009, 04:49
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Цитата(amw @ Feb 4 2009, 18:07) *
Видимо что-то недоинсталировано?
Точно недоинсталировано - MSYS. laughing.gif

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

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


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 12 2009, 11:58
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Troll
сообщение Feb 13 2009, 06:42
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Цитата(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 присутствует, но сборка проходит нормально.


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016