LINUX.ORG.RU

нюансы при установке программ из исходников


0

1

Подскажите пожалуйста где в инете можно найти подробную информацию, где бы рассматривались и разбирались всевозможные ошибки при установке программ из исходников в линукс. Статьи где говориться об установке программ из исходников такого плана (распакуйте каталог, зайдите в него, наберите ./configure ; make ; make install) такие статьи я и сам находил и это ясно и так. Я думаю что эти ошибки можно классифицировать и разделить по группам и с минимальными знаниями программирования на С разобраться, устранить их и установить данную программу. Так же интересует информация про оптимизацию программ под конкретное железо. Такие статьи мне не попадались.
Так же интересует информация про компилирование ядра под конкретное железо, так же статьи на эту тему общего характера не интересуют. В своё время намучился ядро не видело ide дисков, причём корень монтировался нормально, а вот по команде fdisk и blkid была пустота, как в последствии выяснилось включение опции hotplug и ещё какой то решило проблему, причём при выключенной hotplug всё работало, вторую опцию так и не вспомнил.
Если кто очень хорошо разбирается в этих вопросах то я готов заплатить за интерактивное обучение, (объёмом С для изучения данного материала я владею) если кого заинтересовало данное предложение напишите мне на почту v4567@mail.ru
За помощь заранее благодарен.

★★

Какие статьи? Обычно это написано в README или INSTALL корневой директории тарбола.

Ну или можно определить по содержимому этой директории: есть make - запускаем make && make install; нет make, но есть CMakeLists.txt - сначала cmake . ; нет make, но есть configure - сначала делаем ./configure. Ну и еще qmake'ом иногда пользуются. Больше, вроде, популярных средств нет.

Eddy_Em ☆☆☆☆☆
()

информация про оптимизацию программ под конкретное железо

man gcc

компилирование ядра под конкретное железо

make menuconfig или make xconfig, а потом по ключикам help смотрим.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Eddy_Em вы не внимательно прочли мой вопрос
./configure ; make ; make install
это и я знаю
меня интересует информация что делать если программа не компилиться или не конфигуриться

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Включать логику и внимательно читать сообщения об ошибках. Обычно «программа не компилится/не конфигурируется», если у вас какие-то зависимости не удовлетворены. Об этом можно узнать в выхлопе cmake или configure. Если же присутствует готовый Makefile - по сообщениям об ошибках gcc (но это уже не так тривиально, например, напишет он, что не найдена функция some_rare_function - и гадай, какая библиотека ее содержит), но и в этом случае сознательный разработчик в README или INSTALL напишет зависимости.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А вообще, если такие проблемы возникают часто, может, лучше воспользоваться пакетным менеджером своего дистрибутива?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Eddy_Em

Включать логику и внимательно читать сообщения об ошибках. Обычно «программа не компилится/не конфигурируется», если у вас какие-то зависимости не удовлетворены. Об этом можно узнать в выхлопе cmake или configure. Если же присутствует готовый Makefile - по сообщениям об ошибках gcc (но это уже не так тривиально, например, напишет он, что не найдена функция some_rare_function - и гадай, какая библиотека ее содержит), но и в этом случае сознательный разработчик в README или INSTALL напишет зависимости.



Да если бы так всё просто.

Пытаюсь из исходников на lfs собрать yate. Конфигуре прошло нормально а вот маке заканчивается с ошибкой.
Вот лог конфигуре http://pastebin.com/TYGUYBiz
Вот лог маке http://pastebin.com/3ytXsL5T
в общем маке заканчивается с такими ошибками:
make -C ./engine all
make[1]: Entering directory `/root/progs/yate/yate/engine'
make[1]: Цель `all' не требует выполнения команд.
make[1]: Leaving directory `/root/progs/yate/yate/engine'
g++ -Wall -o yate -lpthread main.o libyate.so
libyate.so: undefined reference to `sem_init'
libyate.so: undefined reference to `__pthread_unregister_cancel'
libyate.so: undefined reference to `sem_destroy'
libyate.so: undefined reference to `__pthread_register_cancel'
libyate.so: undefined reference to `sem_post'
libyate.so: undefined reference to `sem_trywait'
libyate.so: undefined reference to `pthread_detach'
libyate.so: undefined reference to `sem_getvalue'
libyate.so: undefined reference to `sem_wait'
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [yate] Ошибка 1

Вот вывод команды readelf -s /lib/libpthread.so.0 http://pastebin.com/kW5zbW9F

Библиотека libpthread у меня версии 2.11.1

что интересно в этой библиотеке нет тех функций что не нашёл линковщик кроме двух, они есть это __pthread_register_cancel и функция pthread_detach ЧТО ОЧЕНЬ СТРАННО!!! вед линковщик написал что их нет.

lfs у меня без графики с до установкой некоторых дополнительных библиотек и программ, с библиотеками немного напутано.

Если так всё просто помогите дельным советом в какую сторону копать, а если реально поможете установить так я Вам ещё и заплачу.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Кривой сборщик?

Очень странно, что autotools не прописали -lpthread во флаги gcc.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от v4567

Да, а библиотека pthread для статической компиляции у вас есть?

Eddy_Em ☆☆☆☆☆
()

что бы не создавать новой темы спрошу здесь странно я когда в дебиане делал make он писал что такой команды нет. ЧЯДНТ ?

nickionn ★☆
()

./configure make make install

Правило 14443 жеж.

man RPM-build, deb-build, [формат_пакетов_вашего_дистрибутива]-build

Xenon ★★★
()

«програмы из исходников» не устанавливаются. «програмы из исходников» компилируются.

Led ★★★☆☆
()
Ответ на: комментарий от Led

Eddy_Em:

Да, а библиотека pthread для статической компиляции у вас есть?


да есть /lib/libpthread-2.11.1.so

Очень странно, что autotools не прописали -lpthread во флаги gcc.


вот начало созданного скриптом ./configure файла Makefile

# Makefile
# This file holds the make rules for the Telephony Engine

# override DESTDIR at install time to prefix the install directory
DESTDIR :=

# override DEBUG at compile time to enable full debug or remove it all
DEBUG :=

CXX := g++ -Wall
SED := sed
DEFS :=
LIBTHR:= -lpthread
INCLUDES := -I. -I.
CFLAGS := -O2 -fno-check-new -fno-exceptions -fPIC -DHAVE_GCC_FORMAT_CHECK
LDFLAGS:=
LDCONFIG:=true
RPMOPT :=

MKDEPS := ./config.status
PROGS:= yate
YLIB := libyate.so.3.3.2
SLIBS:= $(YLIB) libyate.so \
libyatesig.so.3.3.2 libyatesig.so \
libyatemgcp.so.3.3.2 libyatemgcp.so \
libyatejabber.so.3.3.2 libyatejabber.so
INCS := yateclass.h yatemime.h yatengine.h yatephone.h yatecbase.h
GENS := yateversn.h
LIBS :=
MAN8 := yate.8 yate-config.

Это вы имеет ввиду не прописан параметр LIBS?????

v4567 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.