LINUX.ORG.RU

Не компиляется

 , ,


1

1

Конечная задача:

скомпилить vlc

Предпринятые действия: Создал очередь зависимостей

sqg -p vlc
Запустил скачивание/компиляние/установку
sbopkg -i vlc.sqf

Проблемы: Пока решил несколько. Но дальше чувствую устану и умру уставшим. Возможно я просто что-то делаю не так. Поэтому вот подымаю вопросы.

Текущие претензии sbopkg: он спотыкается на этапе сборки projectM. Что это такое и почему оно попало в список зависимостей для vlc — не интересовался, проигнорить не пробовал. Кусок выхлопа кажущийся проблемным:

-- The CXX compiler identification is GNU 4.8.2
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- broken
CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:54 (message):
  The C++ compiler "/usr/bin/c++" is not able to compile a simple test
  program.

  It fails with the following output:

   Change Dir: /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp

  

  Run Build Command:/usr/bin/gmake "cmTryCompileExec1645407381/fast"

  /usr/bin/gmake -f CMakeFiles/cmTryCompileExec1645407381.dir/build.make
  CMakeFiles/cmTryCompileExec1645407381.dir/build

  gmake[1]: Entering directory
  `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'

  /usr/bin/cmake -E cmake_progress_report
  /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/CMakeFiles
  1

  Building CXX object
  CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o

  /usr/bin/c++ -O2 -march=i486 -mtune=i686 -lglut -lGL -o
  CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o -c
  /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx


  Linking CXX executable cmTryCompileExec1645407381

  /usr/bin/cmake -E cmake_link_script
  CMakeFiles/cmTryCompileExec1645407381.dir/link.txt --verbose=1

  /usr/bin/c++ -O2 -march=i486 -mtune=i686 -lglut -lGL
  CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o -o
  cmTryCompileExec1645407381 -rdynamic

  
  /usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld:
  cannot find -lglut

  collect2: error: ld returned 1 exit status

  gmake[1]: Leaving directory
  `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'

  gmake[1]: *** [cmTryCompileExec1645407381] Error 1

  gmake: *** [cmTryCompileExec1645407381/fast] Error 2

  

  

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:1 (PROJECT)


-- Configuring incomplete, errors occurred!
See also "/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeOutput.log".
See also "/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeError.log".

projectM:
Would you like to continue processing the rest of the
queue or would you like to abort?  If this failed
package is a dependency of another package in the queue
then it may not make sense to continue

Здесь упоминается некий лог, но в нем то же самое что уже приведено здесь. Мнения? Что за -lglut?



Последнее исправление: Csandriel (всего исправлений: 1)

Здесь упоминается некий лог,

Не, все-таки подошью, для полноты так сказать панорамы ситуации.

«/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeError.log

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/c++ 
Build flags: -O2;-march=i486;-mtune=i686;-lglut;-lGL
Id flags: 

The output was:
1
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status


Determining if the CXX compiler works failed with the following output:
Change Dir: /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec570982672/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec570982672.dir/build.make CMakeFiles/cmTryCompileExec570982672.dir/build
gmake[1]: Entering directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building CXX object CMakeFiles/cmTryCompileExec570982672.dir/testCXXCompiler.cxx.o
/usr/bin/c++    -O2 -march=i486 -mtune=i686 -lglut -lGL    -o CMakeFiles/cmTryCompileExec570982672.dir/testCXXCompiler.cxx.o -c /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTryCompileExec570982672
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec570982672.dir/link.txt --verbose=1
/usr/bin/c++   -O2 -march=i486 -mtune=i686 -lglut -lGL     CMakeFiles/cmTryCompileExec570982672.dir/testCXXCompiler.cxx.o  -o cmTryCompileExec570982672 -rdynamic 
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status
gmake[1]: Leaving directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
gmake[1]: *** [cmTryCompileExec570982672] Error 1
gmake: *** [cmTryCompileExec570982672/fast] Error 2


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/c++ 
Build flags: -O2;-march=i486;-mtune=i686;-lglut;-lGL
Id flags: 

The output was:
1
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status


Determining if the CXX compiler works failed with the following output:
Change Dir: /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec1392472824/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec1392472824.dir/build.make CMakeFiles/cmTryCompileExec1392472824.dir/build
gmake[1]: Entering directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building CXX object CMakeFiles/cmTryCompileExec1392472824.dir/testCXXCompiler.cxx.o
/usr/bin/c++    -O2 -march=i486 -mtune=i686 -lglut -lGL    -o CMakeFiles/cmTryCompileExec1392472824.dir/testCXXCompiler.cxx.o -c /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTryCompileExec1392472824
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1392472824.dir/link.txt --verbose=1
/usr/bin/c++   -O2 -march=i486 -mtune=i686 -lglut -lGL     CMakeFiles/cmTryCompileExec1392472824.dir/testCXXCompiler.cxx.o  -o cmTryCompileExec1392472824 -rdynamic 
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status
gmake[1]: Leaving directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
gmake[1]: *** [cmTryCompileExec1392472824] Error 1
gmake: *** [cmTryCompileExec1392472824/fast] Error 2


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: /usr/bin/c++ 
Build flags: -O2;-march=i486;-mtune=i686;-lglut;-lGL
Id flags: 

The output was:
1
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status


Determining if the CXX compiler works failed with the following output:
Change Dir: /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/gmake "cmTryCompileExec1645407381/fast"
/usr/bin/gmake -f CMakeFiles/cmTryCompileExec1645407381.dir/build.make CMakeFiles/cmTryCompileExec1645407381.dir/build
gmake[1]: Entering directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building CXX object CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o
/usr/bin/c++    -O2 -march=i486 -mtune=i686 -lglut -lGL    -o CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o -c /tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTryCompileExec1645407381
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1645407381.dir/link.txt --verbose=1
/usr/bin/c++   -O2 -march=i486 -mtune=i686 -lglut -lGL     CMakeFiles/cmTryCompileExec1645407381.dir/testCXXCompiler.cxx.o  -o cmTryCompileExec1645407381 -rdynamic 
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: cannot find -lglut
collect2: error: ld returned 1 exit status
gmake[1]: Leaving directory `/tmp/SBo/projectM-complete-2.1.0-Source/build/CMakeFiles/CMakeTmp'
gmake[1]: *** [cmTryCompileExec1645407381] Error 1
gmake: *** [cmTryCompileExec1645407381/fast] Error 2
Csandriel
() автор топика

С ним вечно проблемы. Попробуй решить зависимость через sbodeps. Ещё можно взять автоматически собирающий всё у Alienbob-а, его и использую. Ещё у microlinux-а есть он же. У slacky для 14.1 и старее кажется есть.

coyotl
()
Ответ на: комментарий от deadNightTiger

Сча подтянем. Кажется это решение. Спасибо.

Csandriel
() автор топика

sqg -p vlc

откуда же он у меня?

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

решить зависимость через sbodeps.

Впервые слышу, очень интересно. Благодарю. Особо за оперативность. Весь лор от всей нашей деревни.

У меня вообще впечатление, что в списках зависимостей только непосредственно прикладные продукты, а все то что называется >sane compile environment (кажется оно так называется) оно как-то не учитывается. Одной из предыдущих проблем тоже было подтягивание каких то оптимизирующих компиляние библиотек.

с ним вечно проблемы

Надеюсь, когда соберу весь зоопарк возможных библиотек для компиляния, они закончатся ^_^

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

Лучше традиционно не ставить, а опакетить

Так оно по любом в итоге пакет генерит и уже его ставит, я так понял. Пакеты потом в локальной кеше где-то, кажется.

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

Спасибо. Но я лучше как-нибудь слакбилдами. Чтобы sbopkg потом мог удалить свои пакеты, если что. Из сырцов мимо пакетирования боюсь билдить/ставить. Пока что боюсь.

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

Csandriel Собственно под собрать и поставить я и подразумевал сделать что-то вроде слакобилда. Главное, чтобы это как-то фигурировало в зависимостях.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

Мне пока не по квалификации собрать пакет. Оно есть чем конечно. Инструменты есть для этого, но до них еще далеко. Там надо по моему в чруте собирать, а потом упаковывать.

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

Йохохо. В закладки. Спасибо. Но этот квест все же дожму уже тем образом каким взялся. Ради экспы на будущее.

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

Дада, то кинуть и хотел. Вообще у слаки куча реп. Есть сервис slackware.uk зеркалирующий почти всех. Посмотри описания разных. Безпердольнического использования!

coyotl
()
Ответ на: комментарий от Csandriel

Юный падаван, вижу чит в виде sbopkg освоил :) Но для квеста vlc (а это Nightmare) этого маловато. Если не ошибаюсь, Ерик там линкует vlc с зависимостями статически, что-бы (не)наличие (криво)собранного/установленного ffmpeg(и прочего зоопарка) не влияло на работоспособность пациента. Да, зависимости билдятся отдельно тоже, а не системные берутся.
Рекомендую там в репах глянуть на секцию restricted (vlc касается тоже).
Также есть чит под названием slackpkg+ ;)
Ну а также linuxquestions.org

FeyFre ★★★★
()

freeglut входит в стоковый набор 14.2, поэтому не поминается как отдельная зависимость на SBo:
x/freeglut

slackpkg install freeglut

Но если сборка не самоцель, рекомендую slackpkg+ и хранилище restricted, затем
slackpkg install vlc

Оно еще и обновляться будет потом само...

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)

Я брал для сборки vlc Слакбилд от Эрика http://www.slackware.com/~alien/slackbuilds/vlc/ . Нужно скачть у него сам Слакбилд и запустить вручную. Всё собралось без проблем c первого раза. Где-то в самом Слакбилде следует указать, что нужно использовать кодеки.

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

Но для квеста vlc (а это Nightmare)

Но я его почти ушатал. Так что очень лестна такая оценка квеста ^_^

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

Эрика уже зафрендил, правда он не знает.

Где-то в самом Слакбилде следует указать, что нужно использовать кодеки.

Я нагуглил такой варинат, что параметры сборки можно передавать самому sbopkg. Как-то типа

sbopkg -i myapp:myparameter="value"
Но как это применить в случае параметра вида
-D ENABLE_EIGEN="OFF"
Не нашелся как. Параметр выше взят из головы, я не помню какой там был нужен, но там три токена было, а в талмуде было только два предусмотрено. Как это все кавычить я не стал разбираться, много делов. Потому что каждая попытка сборки это кусок времени.

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

sbopkg -i myapp:myparameter=«value»

Кстати примерно таким же макаром передаются параметры модулям вкомпиленым в ядро. — Через двоеточие-имямодуля-параметр. Помнится где-то был такой вопрос и остался неразрешенным.

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

Суть параметров к слакбилдам это запуск в таком виде:
PARAMNAME="VALUE" ./appname.Slackbuild
Так их руками запускают люди. sbopkg - помощник, превратит ваше appname:PARAMNAME="VALUE" в пример выше

На самом деле могли бы и попробовать через ncurses интерфейс задать - оно ближе к реальному запуску. Даже между запусками сохраняет эти параметры(переспрашивает)

ЗЫ: sbopkg - баш скрипт. Погрепайте как параметр превращается в конечный запус билда.
ЗЗЫ: https://www.sbopkg.org/docs.php

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

ваше

Прошу не надо. Я консервативен. И еще помню времена когда «вы» в интернетах по умолчанию подразумевало «идите» и далее сложную строку путевых указателей.

По сабжу: большое спасибо, буду знать. Только там наверное нужно точка с запятой, после валуе; если, как я понял, здесь переменная задается до запуска скрипта, и видимо в скрипте прежде чем задать соответствующую строку проверяется, не задана ли она уже?

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

sbopkg - баш скрипт.

Дальше больше уважаю слакварь. Все на столько просто на сколько возможно. Замечательно. Проведу вскрытие на досуге ^_^ Поучусь. Но в слакбилдах уже начал копаться. Пришлось. О чем не жалею.

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

Типочное использование параметров слакбилдах.
OPTION="yes" ./appname.SlackBuild

appname.SlackBuild

...
OPTION=${OPTION:-no}
...
ADDPARAMS=
if [ ! $OPTIOM -eq no ]; then
  ADDPARAMS=$ADDPARAMS --with-option
fi
...
...
./configure --prefix=/usr ... $ADDPARAMS ...
...

Из доки sbopkg по ссылке.

Note: multiple arguments to -b, -g, -i, and -s must be quoted («pkg1 pkg2») or
can be specified multiple times (-i foo -i bar). If using the latter syntax,
build options may also be passed on the command line on a per app basis using
the -b or -i flags in colon-separated groups (where whitespace must also be
quoted). For example, '-i app:opt1=«arg1 arg2»:opt2=arg1 app2'


Хитро одному слакьилду передали 2 параметра, один с пробелом, второй нет. Как слакбилд параметр обработает - его личное дело. Слакбилд - баш скрипт, как запрограммируете, так и будет работать. Главное что-бы выплюнул пакеты в нужное место($OUTPUT). Ах да, абсолютно никто не запрещает слакбилдку выплюнуть хоть дюжину пакетов за раз ;) Так делают слакбилды в поставке слаки(гцц например, глибц помоему тоже), так делают некоторые слкабилды Ерика(особенно КДЕ). Только такие слакбилды на slackbuilds.org не попадут.

Эрика уже зафрендил, правда он не знает.

Таких как мы с тобой у него дофигушки :)
Рекомендую зафрендить ещё ponce и kikinovak-а

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

Не усвою конечно все и сразу, но что-то прояснилось. Спасибо.

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

наверное нужно точка с запятой, после валуе

ни в коем случае. Иначе она на команду после этой точки с запятой не будет распространяться ;)

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

Странно. Я думал это типа объявление переменной в рамках среды. Сейчас догнал. Я спутал с ситуацией экспорта.

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

По поводу применения не предусмотренных автором слакбилда параметров: посмотрите в слакбилде как это обычно делают

SOMETHING=${SOMETHING:-no}
...
[ $SOMETHING = "yes" ] && optSOMETHING="-D SOMETHING"
...
./configure \
  $optSOMETHING \
  ...

Но обычно отдельными опциями выносят только то, что не определяет самостоятельно система сборки. Те же autotools обычно позволяют разработчику предусматривать проверку,есть ли во время сборки библиотека, и, если есть, подключать её. Тогда наличие возможности X в собранном ПО определяется исключительно наличием библиотеки для X на момент сборки.

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

Я нагуглил такой варинат, что параметры сборки можно передавать самому sbopkg. Как-то типа

sbopkg -i myapp:myparameter=«value»

Я в случае с VLC делал проще. Я скачал сам Слакбилд и руками его поправил. Там нужно было установить USE_PATENTS=YES Всё остальное собралось сразу.

DarthVadimius ★★★★
()

Но дальше чувствую устану и умру уставшим.

Послушай любимую музыку. Попей чаю. Подыши свежим воздухом. Почитай несколько анекдотов.

anonymous
()
Ответ на: комментарий от FeyFre

У меня так и не получилось эти параметры передавать. Может быть дело в том что ключи разные — есть от ./configure а другие от make/cc или еще каких тулз. Короче пришел к тому что мне проще всего поковырять слакбилд. Тем более я их храню, — пусть уже будут исправленные как надо.

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

Но я таки нашел выход. По ходу этим мейкам можно передавать параметры через переменные среды, типа

Ok, i just add a line

export LDFLAGS="-lGL"

it works,ahh, U guys are so kind.

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