Страница 4 из 6
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 06 июн 2017, 14:38
perseus
Мне удалось найти правильную технологию сборки gcc:
I've taken to having GCC build the version of GMP, MPFR and MPC along with the compiler. I now get the source for the current version of the library, and extract it into the top-level directory of the GCC source: gmp-6.0.0, mpfr-3.1.2, etc. Then I create a symlink for each of them: ln -s gmp-6.0.0 gmp; ln -s mpfr-3.1.2 mpfr; ln -s mpc-1.0.2 mpc. Then I run GCC configure and build, and GCC builds these libraries too. – Jonathan Leffler Apr 30 '14 at 13:53
Не нужно компилировать недостающие библиотеки отдельно, а просто нужно распаковать их исходные коды в папки соседние с папкой проекта gcc который вы хотите собрать. И после этого в папке с проектом gcc нужно создать ссылки на папки с исходными кодами недостающих вам библиотек. После этого запустить сборку gcc (./configure, make, make install) компилятор сам соберёт их из исходников (какой умница
)
Я попробовал так собрать gcc-4.7.1 на ОС МСВС-3,0 - действительно всё сконфигурировалось и пошло на сборку....
Но после 30 мин сборки выскочила ошибка:
/mpc/src/set_x.c:96: undefined reference to creall - это функция из семейства функций для вычисления реальной части комплексного числа.
К сожалению в заголовочном файле <complex.h> ОС МСВМ-3,0 определения этой функции нет
У кого есть какие-либо соображения, предложения как обойти эту ошибку времени компиляции ?
Re: Помогите научиться устанавливать программы из исходного кода
Добавлено: 07 июн 2017, 09:31
Olej
perseus писал(а):
Но после 30 мин сборки выскочила ошибка:
Для крупных проектов вы можете ускорить сборку
на порядок (минут до 3-х
) как описано:
-
Разработка программных проектов в Linux (в тексте это ~74 стр.)
- в теме форума
Как правильно собирать ядро? (если не лень ковыряться в довольно хаотическом форумном обсуждении)
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 07 июн 2017, 10:47
Olej
perseus писал(а):
выскочила ошибка:
/mpc/src/set_x.c:96: undefined reference to creall - это функция из семейства функций для вычисления реальной части комплексного числа.
К сожалению в заголовочном файле <complex.h> ОС МСВМ-3,0 определения этой функции нет
У кого есть какие-либо соображения, предложения как обойти эту ошибку времени компиляции ?
1. начните с того, что посмотреть в той системе:
Код: Выделить всё
[olej@dell Linux.books.own]$ man complex
...
2011-09-16
что там за дата у них стоит?
2. creall это:
long double - новый тип, который появляется со стандарта C89, или даже C99 в полной мере...
Про новые стандарты C см.
Язык C: заметки на полях.
3. вам, возможно, придётся пересобрать библиотеку libm.so (где это находится) в новую версию.
P.S. Я же вас предупреждал, что это циклический итерационный многократный процесс...
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 07 июн 2017, 15:38
perseus
Для крупных проектов вы можете ускорить сборку на порядок (минут до 3-х
) как описано:
Сборка у меня происходит на машине с одноядерным Pentium-III 1260 MGz, 256 Mb ОЗУ и HDD-диск - особо не ускоришься, хотя я и изучил ваши рекомендации для ускорения процесса сборки, благодарю за подсказку
P.S. Я же вас предупреждал, что это циклический итерационный многократный процесс...
Осознав свою ошибку, что я использовал при компиляции более высокие версии библиотек, чем этого требовал gcc-4.7.1, я стал придерживаться инструкции по сборке и подобрал рекомендуемые версии библиотек, а именно: gmp-4.2.4, mpfr-2.4.2, mpc-0.8.2
Вторая моя ошибка - не делал "make clean" после каждой неудачной попытки сборки.
Учтя это, мне наконец удалось запустить процесс сборки gcc-4.7.1 на МСВС-3.0 (ядро linux-2.4).....
Вот уже час колбасится, не знаю когда закончится, может придется до утра оставить
Вообщем следим за процессом
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 07 июн 2017, 15:44
perseus
Олег Иванович, а чтобы собрать gcc-6.3.0 требуется установить какие-то патчи.
Поясните пожалуйста общий подход к этой технике. Можно ли установить патч на машину не подключённую к интернет ?
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 07 июн 2017, 17:00
Olej
perseus писал(а):Поясните пожалуйста общий подход к этой технике. Можно ли установить патч на машину не подключённую к интернет ?
Вообще то, патчи - это текстовые patch-файлы... в некотором специальном формате.
Которые
создаются утилитой diff:
Код: Выделить всё
[olej@dell Linux.books.own]$ diff --help
Использование: diff [КЛЮЧ]... ФАЙЛЫ
Compare FILES line by line.
...
(там много интересного далее
).
Фактически, это снимок построчных различий <файл1> и <файл2> ... которые потом можно прилагать к <файл1>, чтобы из него получить <файл2>.
Делается это "наложение заплаток" утилитой:
Код: Выделить всё
[olej@dell Linux.books.own]$ patch --help
Usage: patch [OPTION]... [ORIGFILE [PATCHFILE]]
...
(там тое много интересного
).
Вот более-менее внятные описания того как это происходит:
Использование комманд diff и patch
Как создать и применить патч в Linux
Конечно для наложения патчей вам нужны сами .patch файлы. Но это вовсе не значит, что вы их должны получать online в ходе сборки. Вы можете их скачать на другом компьютере ... или даже совсем в другом месте (дом, работа, ...), а потом только перенести на носителе полученные
файлы в место сборки.
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 08 июн 2017, 10:40
perseus
Вот уже час колбасится, не знаю когда закончится, может придется до утра оставить
Вообщем следим за процессом
Придя утром на работу, наблюдаю результаты сборки:
real 379m10s
user 331m13s
sys 22m24s
Более 6 часов собиралось
Инсталлируем:
real 4m59s
user 1m25s
sys 0m41s
Вуаля! Теперь на машине с МСВС-3.0 (ядро linux-2.4) имеем gcc версии 4.7.1
Но оказалось радоваться рано, при попытке собрать элементарную Go-программку "Hello world", командой gcc -o hello hello.go получаем сообщение от gcc-4.7.1 "компилятор Go не установлен"
Вот так облом, как же так, ведь gcc-4.7.1 должен поддерживать Go ?
Какие есть соображения на этот счёт, товарищи ?
Стоит ли пытаться ставить более высокую версию gcc или тут дело в ядре системы ?
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 08 июн 2017, 11:55
Olej
perseus писал(а):
Вуаля! Теперь на машине с МСВС-3.0 (ядро linux-2.4) имеем gcc версии 4.7.1
Но оказалось радоваться рано, при попытке собрать элементарную Go-программку "Hello world", командой gcc -o hello hello.go получаем сообщение от gcc-4.7.1 "компилятор Go не установлен"
Вот так облом, как же так, ведь gcc-4.7.1 должен поддерживать Go ?
Какие есть соображения на этот счёт, товарищи ?
Стоит ли пытаться ставить более высокую версию gcc или тут дело в ядре системы ?
Я думаю, что дело в конфигурировании сборки: GCC поддерживает много языков и много процессорных архитектур, собирать все и по каждому чиху - достаточно бессмысленно, наберём 80% мусора, который не просили (например, он "поддерживает" FORTRAN, но компилировать FORTRAN-код собранный вами компилятор не станет? ... и не надо!).
gccgo - это отдельное
приложение (программа) в составе огромного
проекта GCC:
Код: Выделить всё
[olej@dell SinCos]$ ls -l /usr/bin/gccgo
-rwxr-xr-x. 1 root root 919840 апр 6 2016 /usr/bin/gccgo
[olej@dell SinCos]$ file /usr/bin/gccgo
/usr/bin/gccgo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=eb500d8c026b4225057a938586fb7571c87767d2, stripped
Для компиляции Go-кода мы указываем программу gccgo, а не просто gcc.
P.S. Покажите ссылку
точно того исходного архива, который вы собираете - возможно (если будет совершенно незанятое время
) я гляну что там нужно в конфигурациях. А вообще - ищите в README.
Re: Помогите научиться устанавливать программы из исходного
Добавлено: 08 июн 2017, 12:02
Olej
perseus писал(а):Стоит ли пытаться ставить более высокую версию gcc или тут дело в ядре системы ?
Само ядро системы
здесь не при чём - не тратьте на это время!
Re: Помогите научиться устанавливать программы из исходного кода
Добавлено: 08 июн 2017, 12:33
perseus
P.S. Покажите ссылку точно того исходного архива, который вы собираете - возможно (если будет совершенно незанятое время
) я гляну что там нужно в конфигурациях. А вообще - ищите в REDME.
REDME я конечно ещё раз тщательно проштудирую на счёт конфигурации.
Ссылку я уже не помню откуда исходники брал, это было неделю назад, но вот архив исходников gcc-4.7.1 который я инсталлировал могу тут выложить для всеобщего изучения интересующимися
Позже отредактировано модератором: сообщение уже устарело, и большое вложение его удалено!