Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Программная - Linux (http://battlefox.rooty.ru/forumdisplay.php?f=80)
-   -   Компиляция программ из исходников (http://battlefox.rooty.ru/showthread.php?t=3529)

Сергей Копылов 27.05.2007 19:57

Проблема в том, что я соверщенно не умею компилировать из исходников. Что делать?

VictorS 27.05.2007 20:05

Сергей Копылов, компилируется обычно одной командой "make install" или даже просто "install". Иногда может потребоваться еще предварительно сконфигурировать ("make configure", "configure" и т.п.).

ЗЫ: надеюсь не окажется что я сказал какую-то глупость. Если что, то профи поправьте меня. :)

Frosty 27.05.2007 20:05

Цитата:

Сообщение от Сергей Копылов (Сообщение 122874)
Проблема в том, что я соверщенно не умею компилировать из исходников. Что делать?

Добавлено через 2 минуты
А... Я понял, это просто архив... Разберёмся..

А компилить всё равно не умею. ;)

А мы похожи, мб нам кто нибудь устроит краткий How-to, но не только дать список консольных команд, которыми дело проворачивается, а объясить что этими командами делается и для чего оно все нужно.

VictorS 27.05.2007 20:25

Frosty, у разных программ это может происходить по разному. Обычно все это происходит через утилиту make, которая выполняет сборку программы на основе make-файла. Иногда могут быть добавлены shell-скрипты install и configure для быстрого и понятного запуска. По идее процедура сборки должна быть описана в каком-нибудь readme к программе.

mxx 27.05.2007 21:21

процедура сборки почти всегда описана в файле INSTALL или README.
чаще всего это запуск скрипта configure, который проверяет, установлено ли всё нужное для сборки и настраивает разные параметры, подготавливая Makefile.
затем команда make собирает всё, основываясь на Makefile.
и затем make install от рута "устанавливает", т.е. копирует готовые файлы в соответствующие каталоги.
вместо make install можно использовать например checkinstall, он не просто установит, но и сделает deb или rpm пакет.

Doctor_Zlo 05.06.2007 21:23

Если я поставлю какую то программу из исходников, а потом найду deb пакет той же самой программы и установлю его, не станут ли они каким то образом конфликтовать? И вобще всегда ли можно смело ставить из исходников или стоит стараться это делать как можно реже?

rmn 05.06.2007 22:14

Цитата:

Сообщение от Doctor_Zlo (Сообщение 127222)
Если я поставлю какую то программу из исходников, а потом найду deb пакет той же самой программы и установлю его, не станут ли они каким то образом конфликтовать?

это зависит от того, куда программа из исходников была установлена. Каталог установки определяется при или непосредственно после сборки. Например, в том случае, если для сборки используются утилиты GNU autotools, то префикс указывается скрипту ./configure в опции --prefix

По умолчанию префиксом обычно является /usr/local/ . Обычно, но не обязательно. Так что лучше его явно всегда указывать. Согласно документу-стандарту файловой системы в unix (FHS) для установки "левых" программ следует использовать либо каталог /usr/local/ , либо /opt/programname/ , либо вообще что-нибудь в домашнем каталоге для этого организовать, если пользоваться программой будет только один юзер (например, устанавливать все в ~/soft/)

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

Цитата:

И вобще всегда ли можно смело ставить из исходников или стоит стараться это делать как можно реже?
в пакетном дистре предпочтительнее иметь дело с пакетами. :)

Все, что собрано вручную и установлено (в худшем случае еще и с перезаписью файлов из пакетов) потенциально опасно для системы. Плохо поддается учету в отличии от того, что ставится из пакетов - образуется груда неизвестно откуда и когда взявшихся файлов, тогда как для всех "пакетных" файлов имеется общая база данных и всегда можно удостоверится в подлинности и принадлежности каждого файла в системе.

Скажем, в debian при сборке пакета для всех файлов, ему принадлежащих, подсчитывается контрольная сумма (см. /var/lib/dpkg/info/) и изменения файлов в процессе эксплуатации системы можно всегда отследить. С тем, что установлено из исходников, такого не сделаешь.

ArcFi 06.06.2007 01:14

Цитата:

Сообщение от Doctor_Zlo (Сообщение 127222)
Если я поставлю какую то программу из исходников, а потом найду deb пакет той же самой программы и установлю его, не станут ли они каким то образом конфликтовать? И вобще всегда ли можно смело ставить из исходников или стоит стараться это делать как можно реже?

Doctor_Zlo, по изложенным выше причинам лучше сразу после компиляции не спешить с "sudo make install" а выполнить "checkinstall" для сборки соответствующего пакета. ;) Существуют и другие способы сборки deb-пакетов, в частности, здесь имеется пару линков.

Сергей Копылов 02.04.2008 14:47

Скрытый текст
Вы должны войти под своим логином или зарегистрироваться и иметь 25 сообщение(ий)
Правила форума | Регистрация на форуме
Предупреждение: увидев этот блок скрытого текста, не стоит сразу бросаться набивать бессмысленные сообщения. Освойтесь на форуме, проникнитесь его атмосферой и пишите, если Вам действительно есть, что сказать. Если Модератор решит, что Вы набиваете сообщения, он удалит их все, а Вам выдаст либо предупреждение, либо сразу заблокирует Ваш аккаунт.

Ringo 02.04.2008 16:35

Гм. это пишется во всех файлах INSTALL, которые идут обычно с сорцами. да и инфа эта никакая не секретная, а легкодоступная)

tmp0000 07.04.2008 08:16

Сергей Копылов, я уже устал всем повторять, что make install - не лучшее решение.
Почитайте в lor-faq про checkinstall.

Ringo 08.04.2008 16:38

tmp0000, а префиксы не спасают?

mxx 15.04.2008 21:01

кто может помочь с кросскомпиляцией? или ткнуть в мануал какой-нибудь...
конкретно: нужно собрать 32битный мплеер на x64 :)

rmn 15.04.2008 22:49

mxx, м.б. google ? :) кто ж еще-то.

zhekas 15.04.2008 22:55

Цитата:

Сообщение от mxx (Сообщение 251079)
кто может помочь с кросскомпиляцией? или ткнуть в мануал какой-нибудь...
конкретно: нужно собрать 32битный мплеер на x64

http://disk.karelia.ru/z/zhekas/Linu...Mplayer/manual
Либо официальный сайт http://www.mplayerhq.hu

mxx 15.04.2008 23:26

rmn, в том-то и дело, что не гуглится :(
так хочется фильм посмотреть, а там ts контейнер и vc1 кодек, без win32 кодеков видео убегает вперёд постоянно.
нашёл старую сборку 32битного мплеера, но она настолько старая, что в ts не видит видео...
выход - собрать 32битный новый мплеер - но как - фиг знает :)

tmp0000 15.04.2008 23:36

Мб это, или я торможу?
http://www.mplayerhq.hu/DOCS/HTML/en/faq.html#id2552977
http://www.linuxquestions.org/questi...-64bit-356837/

ArcFi 15.04.2008 23:58

mxx, http://forum.battlefox.ru/showthread.php?t=6693 -- этот топик смотрел?

mxx 16.04.2008 01:47

всем спасибо, с компиляцией вроде разобрался :)
с поиском и установкой нужных 32битных либ очень помог пакет getlibs: http://ubuntuforums.org/showthread.php?t=474790
ArcFi, как раз на ubuntuguides и есть ссылка на очень старый mplayer, который не видит видео в .ts
в общем мплеер теперь использует win32 кодеки, но страшно ругается:
Код:

Starting playback...
ProcessInputError  r:0xffffff9c=-100 (keyframe: 1)
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 0 0
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 1 0
ProcessInputError  r:0x80004005=-2147467259 (keyframe: 1)??,?% 2 0

ну зато wmv9 обычные теперь играются, и то хорошо :)
вот так печально закончилась моя первая попытка посмотреть hd-dvd remux :)
кстати в 32битном режиме если использовать ffmpeg - то уже не хватает производительности процессора :) всё таки есть прок от 64битности ;)

MuR 26.04.2009 01:06

а еще компилить можно с оптимизацией, путем добавления команд
Цитата:

export CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
перед компиляцией. если что поправьте меня, т.к. в моем дистрибутиве эти настройки записаны в файл и я их каждый раз не ввожу.
еще поясню, что опция -march=native дает команду определить компилятору семейство вашего процессора совместно с архитектурой операционной системы.
-O2 значит второй уровень оптимизации, его обычно рекомендуют для оптимальной сборки. например -O3 может привести к непредвиденному результату. :)


Текущее время: 17:13. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot