Помогите научиться устанавливать программы из исходного кода

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 06 июн 2017, 14:38

Мне удалось найти правильную технологию сборки 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) компилятор сам соберёт их из исходников (какой умница :lol: )
Я попробовал так собрать gcc-4.7.1 на ОС МСВС-3,0 - действительно всё сконфигурировалось и пошло на сборку....
Но после 30 мин сборки выскочила ошибка:
/mpc/src/set_x.c:96: undefined reference to creall - это функция из семейства функций для вычисления реальной части комплексного числа.
К сожалению в заголовочном файле <complex.h> ОС МСВМ-3,0 определения этой функции нет :cry:
У кого есть какие-либо соображения, предложения как обойти эту ошибку времени компиляции ?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного кода

Непрочитанное сообщение Olej » 07 июн 2017, 09:31

perseus писал(а): Но после 30 мин сборки выскочила ошибка:
Для крупных проектов вы можете ускорить сборку на порядок (минут до 3-х ;-) ) как описано:
- Разработка программных проектов в Linux (в тексте это ~74 стр.)
- в теме форума Как правильно собирать ядро? (если не лень ковыряться в довольно хаотическом форумном обсуждении)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 07 июн 2017, 10:47

perseus писал(а): выскочила ошибка:
/mpc/src/set_x.c:96: undefined reference to creall - это функция из семейства функций для вычисления реальной части комплексного числа.
К сожалению в заголовочном файле <complex.h> ОС МСВМ-3,0 определения этой функции нет :cry:
У кого есть какие-либо соображения, предложения как обойти эту ошибку времени компиляции ?
1. начните с того, что посмотреть в той системе:

Код: Выделить всё

[olej@dell Linux.books.own]$ man complex
...
2011-09-16
что там за дата у них стоит?
2. creall это:

Код: Выделить всё

long double creall(long double complex z);
long double - новый тип, который появляется со стандарта C89, или даже C99 в полной мере...
Про новые стандарты C см. Язык C: заметки на полях.
3. вам, возможно, придётся пересобрать библиотеку libm.so (где это находится) в новую версию.

P.S. Я же вас предупреждал, что это циклический итерационный многократный процесс... ;-)

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 07 июн 2017, 15:38

Для крупных проектов вы можете ускорить сборку на порядок (минут до 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 :oops:
Вторая моя ошибка - не делал "make clean" после каждой неудачной попытки сборки. :oops:
Учтя это, мне наконец удалось запустить процесс сборки gcc-4.7.1 на МСВС-3.0 (ядро linux-2.4).....
Вот уже час колбасится, не знаю когда закончится, может придется до утра оставить :-?
Вообщем следим за процессом ;-)

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 07 июн 2017, 15:44

Олег Иванович, а чтобы собрать gcc-6.3.0 требуется установить какие-то патчи.
Поясните пожалуйста общий подход к этой технике. Можно ли установить патч на машину не подключённую к интернет ? :roll:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 07 июн 2017, 17:00

perseus писал(а):Поясните пожалуйста общий подход к этой технике. Можно ли установить патч на машину не подключённую к интернет ? :roll:
Вообще то, патчи - это текстовые 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 в ходе сборки. Вы можете их скачать на другом компьютере ... или даже совсем в другом месте (дом, работа, ...), а потом только перенести на носителе полученные файлы в место сборки.

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение perseus » 08 июн 2017, 10:40

Вот уже час колбасится, не знаю когда закончится, может придется до утра оставить :-?
Вообщем следим за процессом ;-)
Придя утром на работу, наблюдаю результаты сборки:
real 379m10s
user 331m13s
sys 22m24s
Более 6 часов собиралось :-o
Инсталлируем:
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 не установлен" :cry:
Вот так облом, как же так, ведь gcc-4.7.1 должен поддерживать Go ?
Какие есть соображения на этот счёт, товарищи ?
Стоит ли пытаться ставить более высокую версию gcc или тут дело в ядре системы ?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 08 июн 2017, 11:55

perseus писал(а): Вуаля! Теперь на машине с МСВС-3.0 (ядро linux-2.4) имеем gcc версии 4.7.1 :-)
Но оказалось радоваться рано, при попытке собрать элементарную Go-программку "Hello world", командой gcc -o hello hello.go получаем сообщение от gcc-4.7.1 "компилятор Go не установлен" :cry:
Вот так облом, как же так, ведь 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.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного

Непрочитанное сообщение Olej » 08 июн 2017, 12:02

perseus писал(а):Стоит ли пытаться ставить более высокую версию gcc или тут дело в ядре системы ?
Само ядро системы здесь не при чём - не тратьте на это время!

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Помогите научиться устанавливать программы из исходного кода

Непрочитанное сообщение perseus » 08 июн 2017, 12:33

P.S. Покажите ссылку точно того исходного архива, который вы собираете - возможно (если будет совершенно незанятое время ;-) ) я гляну что там нужно в конфигурациях. А вообще - ищите в REDME.
REDME я конечно ещё раз тщательно проштудирую на счёт конфигурации.
Ссылку я уже не помню откуда исходники брал, это было неделю назад, но вот архив исходников gcc-4.7.1 который я инсталлировал могу тут выложить для всеобщего изучения интересующимися

Позже отредактировано модератором: сообщение уже устарело, и большое вложение его удалено!

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей