Новости:

Форуму исполнилось 12 лет!

Появилась ссылка на архив (до 16.06.2020 г.) форума и вики slackware.ru .
Владельцы и(или) правообладатели сайта slackware.ru могут со мной связаться
и я уберу ссылку по их первой же просьбе. По ссылке не работает поиск и, естественно, логин с регистрацией. Поэтому, всё только для чтения.

Главное меню

Странности при компиляции

Автор pilgrim, 07 января 2014, 20:00:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

pilgrim

Может прозвучит по-дилетантски, однако, были замечены когда-нибудь трудности при сборке в условиях виртуальной машины? В моем случае - VirtualBox.
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

bormant

#1
Если отдадите ВМ мало ресурсов и задумаете собрать что-то тяжелое в сборке, скажем, chromium или Firefox, то фиаско гарантировано. В остальном проблем никаких, равно как и целесообразности в подобном занятии. Куда сподручнее собирать в системе, установленной в chroot.
Ах да, если речь про Windows хост, то действительно остается VirtualBox/qemu.

ps. Если правильно путаю, Alien Bob собирает в виртуальных машинах даже LibreOffice под несколько версий, о чем упоминал в своем блоге, а это та еще задачка по потребным ресурсам.

pilgrim

понятненько...
Да, хост виндовый. Все же хочу перевезти свой сервачок на слакварь, поставил на виртуалбоксе 14.1 пробую собирать с флагами -native. Много разных ошибок сыпаться стало в основном на нехватку библиотек g++. При сборке ставил все, кроме Х и иже.

Последний раз собирал в версии 13.1, года три назад, не было таких проблем, скрамливай знай зависимости только... а тут что-то не пошло с накоку..вот и подумал может ли быть зависимость от виртуализации....
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

bormant

Как-то неопределенно... Можно пример?

pilgrim

#4
мне кажется, вряд ли разберемся, как-то все хламом валится сплошным..

самая распространенная ошибка сборки:

configure:4136: error: C compiler cannot create executables

config.log при попытках сборки любых пакетов:

/usr/libexec/gcc/i486-slackware-linux/4.8.2/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory

Устанавливал full L. Потом даже переустанавливал пару раз ОС. Все равно.

Потом ставил без L, а запрашиваемые либы искал по манифесту на установочном диске и доставлял бинарниками. Вроде пошло дело.

Через раз вываливается с ошибкой:
configure:4032: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.


отчего зависит эта ошибка так и не понял.

Ну и потом более локализованные проблемы, например, для сборки usb-modeswitch нужна libusb.h, которая лежит почему-то в слаке не в /usr/include/libusb.h, а /usr/include/libusb-1.0/libusb.h. Подстановка симлинка не помогает, потом даже копировал в /usr/include/libusb.h, все равно:

/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: /usr/lib/gcc/i486-slackware-linux/4.8.2/../../../libusb.so: undefined reference to symbol 'libusb_open'
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../../i486-slackware-linux/bin/ld: note: 'libusb_open' is defined in DSO /usr/lib/libusb-1.0.so.0 so try adding it to the linker command line
/usr/lib/libusb-1.0.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status


config.log она не создает...

попробую в сырцах выставить #include <libusb-1.0/libusb.h> вместо #include <libusb.h>, но думаю эффект будет таким же...

вообщем какая-то СНЁХ творицца:)
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

bormant

#5
Цитата: pilgrim от 09 января 2014, 08:43:49вряд ли разберемся
Лиха беда начало...

Цитата: pilgrim от 09 января 2014, 08:43:49самая распространенная ошибка сборки:

configure:4136: error: C compiler cannot create executables

config.log при попытках сборки любых пакетов:

/usr/libexec/gcc/i486-slackware-linux/4.8.2/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory

Устанавливал full L. Потом даже переустанавливал пару раз ОС. Все равно.

Потом ставил без L, а запрашиваемые либы искал по манифесту на установочном диске и доставлял бинарниками. Вроде пошло дело.
То есть, первоначальные условия уже не воспроизвести и проверять нет смысла?

Тем не менее, некоторые соображения.

1. Ошибка "error: C compiler cannot create executables" тривиальна -- configure запустил компиляцию тестового исходника, ожидаемого бинарника не получилось. Причины смотрим в config.log.

2. Ошибка "/usr/libexec/gcc/i486-slackware-linux/4.8.2/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory" -- тоже тривиальна, загрузчик не смог загрузить разделяемую библиотеку (shared object). А вот почему не смог -- зависит от нескольких возможных причин:

а) нет файла библиотеки, проверить просто:
- ставился ли пакет с такой библиотекой:
# grep -FR /libmpc.so.2 /var/log/packages
/var/log/packages/libmpc-0.8.2-i486-2:usr/lib/libmpc.so.2.0.0

- на месте ли файл библиотеки:
# ls -l /usr/lib/libmpc.so.2.0.0

б) не установлены зависимости библиотеки, проверить просто:
# ldd /usr/lib/libmpc.so.2.0.0
        linux-gate.so.1 (0xffffe000)
        libmpfr.so.4 => /usr/lib/libmpfr.so.4 (0xb7670000)
        libgmp.so.10 => /usr/lib/libgmp.so.10 (0xb7603000)
        libc.so.6 => /lib/libc.so.6 (0xb7478000)
        /lib/ld-linux.so.2 (0xb76e9000)
В списке не должно быть "not found".

в) не обновлен кеш линкера. Автоматическое обновление производится при старте машины, если быть точнее, в /etc/rc.M:
if [ -x /sbin/ldconfig ]; then
  echo "Updating shared library links:  /sbin/ldconfig &"
  /sbin/ldconfig &
fi
Некоторые пакеты вызывают ldconfig при своей установке, например, эти:
# grep -Rl ldconfig /var/log/scripts


г) зачем-то установлен пакет не той архитектуры (32/64)
# file /usr/lib/libmpc.so.2.0.0
/usr/lib/libmpc.so.2.0.0: ELF 32-bit LSB  shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

# readelf -h /usr/lib/libmpc.so.2.0.0 | grep Class
  Class:                             ELF32


д) если что-то пропустил, дополняйте...


Цитата: pilgrim от 09 января 2014, 08:43:49Через раз вываливается с ошибкой:

configure:4032: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.

отчего зависит эта ошибка так и не понял.
Нечего тут понимать.
# gcc -V
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.

# gcc --version
gcc (GCC) 4.8.2
gcc --help тоже ничего про -V не знает, нет в 4.8.2 такого ключа. Со вторым тоже понятно: "gcc: fatal error: no input files" -- нет входных файлов, нечего делать.


Цитата: pilgrim от 09 января 2014, 08:43:49Ну и потом более локализованные проблемы, например, для сборки usb-modeswitch нужна libusb.h, которая лежит почему-то в слаке не в /usr/include/libusb.h, а /usr/include/libusb-1.0/libusb.h. Подстановка симлинка не помогает
1) Подобные вещи решаются на уровне опций компилятора: -I /usr/include/libusb-1.0

2) чем не мил родной a/usb_modeswitch ? Если уж хочется хитро пересобрать, чем не устраивает стандартный способ дистрибутива /source/a/usb_modeswitch ?


PS. Вообще говоря, пост мог бы являться наглядной иллюстрацией того, почему новичкам настоятельно рекомендуют делать полную установку, чтобы иметь возможность полноценно работать с системой, приобретать навыки использования.
Мог бы, если бы не некоторые странности, объяснить которые иным образом, чем неполнотой и/или непоследовательностью изложения, пока не могу.

pilgrim

на ваших постах вполне можно писать книжку:)

обработаю все, отпишусь..

...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

pilgrim

#7
еще раз спасибо - узнал новое для себя..а для меня это важно...зафиксирую все же для себя алгоритм поиска проблем при отсутствии какой-либо библиотеки...может даже статейку...нет желания? я начну на вики, а вы дополните, получится неплохой мануальчик в рамках SlackWare.

Цитировать1) Подобные вещи решаются на уровне опций компилятора: -I /usr/include/libusb-1.0

не постесняюсь спросить - скажите, где это смотреть?

Цитировать2) чем не мил родной a/usb_modeswitch ? Если уж хочется хитро пересобрать, чем не устраивает стандартный способ дистрибутива
хочется пересобрать под конкретный процессор...это полезно, думаю...нет, ну можно, конечно, запастись готовыми бинарниками, но субъективно - не мой подход, да и торопиться некуда, время есть... и это плавно перетекает в:

ЦитироватьPS. Вообще говоря, пост мог бы являться наглядной иллюстрацией того, почему новичкам настоятельно рекомендуют делать полную установку, чтобы иметь возможность полноценно работать с системой, приобретать навыки использования.

Согласен с этим только на половину. Если человек впервые для себя ставит ОС - да, иначе такие проблемы его отпугнут и он ее забросит с плевками.
А вот если - приходишь за новыми знаниями, то каждый запинок, он подвигнет на изучение, а это есть багаж знаний, ценность коих усиливается в разы приобретенным самоличным опытом..

мне вот не хочется ставить полностью все, хотя бы потому что при установке с X и L занято 228 Мб ОЗУ, а если только A, AP, D и N, то 174 Мб. Да и "на глазок" проворачивается шустрее.

ну многие на это забивают, конечно, но мне хочется довести до ума...и изучить..
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

bormant

Цитата: pilgrim от 09 января 2014, 13:33:14скажите, где это смотреть?
Казалось бы, такой простой вопрос...
Если коротко: man gcc, поиск на предмет -I.
Если подробнее, системы бывают разные с точки зрения расположения включаемых файлов, библиотек и т.п., наличия тех или иных функций и т.п. Для возможности сборки исходного кода на разных системах в части автоматизации учёта особенностей целевых систем был придуман autotools, именно им генерируется configure, который на целевой системе сборки проверяет наличие тех или иных возможностей и соответствующим образом настраивает сборку, в том числе и расположение заголовочных файлов.

По поводу "без L" -- плохая идея, если совсем без, аукнется довольно быстро, в том числе на собираемом ПО, точнее, на отключении при сборке потенциальных возможностей ввиду отсутствия необходимых библиотек.

Если уж пошли таким путём, в целях упрощения жизни могу посоветовать sbbdep: https://bitbucket.org/a4z/sbbdep/wiki/Home

Цитата: pilgrim от 09 января 2014, 13:33:14А вот если - приходишь за новыми знаниями, то каждый запинок, он подвигнет на изучение, а это есть багаж знаний, ценность коих усиливается в разы приобретенным самоличным опытом..
Согласен с этим только наполовину :-) Как-бы попроще объяснить...
Цитировать
Мужик ночью под фонарем что-то ищет. Подходит другой.
-- Что ищешь?
-- Ключи потерял...
-- Вроде нет здесь. Точно тут потерял?
-- Нет, вон там за углом!
-- Почему же тут ищешь?
-- Так тут светлее!
(q) анекдот
Возвращаясь к теме, не все запинки одинаково полезны ;-) То есть, можно как двигаться вперёд, так и топтаться на месте, героически преодолевая самолично созданные проблемы. Но это так, в порядке предостережения.

Цитата: pilgrim от 09 января 2014, 13:33:14при установке с X и L занято 228 Мб ОЗУ, а если только A, AP, D и N, то 174 Мб.
Странные какие-то результаты. Точно смотрите в строчку "-/+ buffers/cache"? Ну а тех, кто занимает память, легко вычислить по top/htop/ps. Главное помнить, что ОЗУ занимает запущенное, а не установленное.

Если честно, A, AP, D, N целиком тоже не требуются. Если хочется "совсем минимальной системы", есть смысл поискать на эту тему по форуму на LQ, посмотреть в тамошней вики статью http://wiki.linuxquestions.org/wiki/Slackware-Minimal_Install

pilgrim

ЦитироватьГлавное помнить, что ОЗУ занимает запущенное, а не установленное.
:) обижаете..

Цитироватьпосмотреть в тамошней вики статью http://wiki.linuxquestions.org/wiki/Slackware-Minimal_Install
ууух, сколько пространства для творчества - как раз хотел заняться минимализмом для того своего сервера, в идеале: generic-ядро с необходимыми модулями для NAT:) интересно, что получится..
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

pilgrim

да, кстати:
Цитироватьг) зачем-то установлен пакет не той архитектуры (32/64)

ЦитироватьIt's not mentioned in the ChangeLog and this only applies to 32 bit tree: Pat accidentally put x86_64 packages for recordmydesktop in 32 bit directory, so if you have installed that package previously, you might want to perform upgradepkg to the correct recordmydesktop package.

i think, no necessary to explain who is Pat  :new_russian_mini:  :biggrin_mini:
...моя девушка как-то сказала: - Даже, если весь мир будет против тебя - я буду стоять за твоей спиной и тихо подавать патроны...

bormant

Источник: http://slackblogs.blogspot.ru/2012/06/more-bug-fixes-and-improvements.html
Есть трудности с переводом?

29.06.2012 обновления в разрабатываемой ветке Slackware
Не упомянуто в журнале изменений, затрагивает 32-битную ветку: файлы пакета recordmydesktop x86_64 были упакованы в каталогах 32-битной версии, если пакет был установлен ранее, переустановите его.

Есть вопросы, почему так? 64-битные библиотеки попали в /usr/lib вместо /usr/lib64 и могли затереть 32-битные.

Более интересен другой вопрос: это тут зачем?

pilgrim

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

может я неправильно понял вас здесь:

Цитироватьг) зачем-то установлен пакет не той архитектуры (32/64)

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