URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10460
[ Назад ]

Исходное сообщение
"Проблема при сборке Linux From Scratch, пакет Gettext-0.22"

Отправлено vvm13 , 14-Сен-23 13:35 
/Надо отметить, что с C/C++ не работаю и с Linux'ом не очень дружен/

Итак, развлекаюсь со сборкой LFS в виртуалке с Fedora 32.
Всё шло более-менее хорошо, прошёл довольно далеко. И вдруг неожиданно и с размаху налетел на проблему.
Итак, https://www.linuxfromscratch.org/lfs/view/stable-systemd/cha...
Глава 8.32. Gettext-0.22.

Я получаю ошибку в
libtool: link:  gcc -shared  -fPIC -DPIC  -Wl,--whole-archive ./.libs/libgnu.a -Wl,--no-whole-archive  -lc  -g -O2   -Wl,-soname -Wl,libgettextpo.so.0 -Wl,-version-script -Wl,.libs/libgettextpo.ver -o .libs/libgettextpo.so.0.5.9
/usr/bin/ld:.libs/libgettextpo.ver:2: syntax error in VERSION script

Внутри libgettextpo.ver фигня:
[root@fedora .libs]# cat libgettextpo.ver
{ global:
local: *; };

Претензия, видимо, к тому, что после global: должен быть список external-зависимостей a la
{ global:
libgettextpo_version;
local: *; };
, но он пустой.

Формируется он на основе файла .libs/libgettextpo.exp:

libtool: link: /usr/bin/nm -B   ./.libs/libgnu.a | /usr/bin/sed -n -e 's/^.*[    ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[         ][      ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/bin/sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libgettextpo.exp
libtool: link: /usr/bin/grep -E -e "^([^l]|l[^i]|li[^b]|lib[^g]|libg[^e]|libge[^t]|libget[^t]|libgett[^e]|libgette[^x]|libgettex[^t]|libgettext[^p]|libgettextp[^o]|libgettextpo[^_]|libgettextpo_version).*" ".libs/libgettextpo.exp" > ".libs/libgettextpo.expT"


Первая команда даёт непустой список:

(lfs chroot) root:/sources/src/gettext-0.22/gettext-tools/libgettextpo# /usr/bin/nm -B   ./.libs/libgnu.a | /usr/bin/sed -n -e 's/^.*[    ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[         ][      ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | /usr/bin/sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq
libgettextpo_asnprintf
libgettextpo_printf_fetchargs
libgettextpo_printf_parse
libgettextpo_rpl_fopen
libgettextpo_vasnprintf

Но вторая его обнуляет!
libtool: link: /usr/bin/grep -E -e "^([^l]|l[^i]|li[^b]|lib[^g]|libg[^e]|libge[^t]|libget[^t]|libgett[^e]|libgette[^x]|libgettex[^t]|libgettext[^p]|libgettextp[^o]|libgettextpo[^_]|libgettextpo_version).*" ".libs/libgettextpo.exp"
даёт пустой список.

Предполагаю, что на самом деле имеется в виду вырезать всё, кроме "libgettextpo_version". Но этой строки почему-то нет.

Вот то, что я понял из происходящего. И что libgettextpo_version - это какая-то переменная в одном из C-файлов. Но что с ней не так? И ведь не сам же я писал все эти скрипты. И gcc три раза перекомпилён.


Содержание

Сообщения в этом обсуждении
"Проблема при сборке Linux From Scratch, пакет Gettext-0.22"
Отправлено ACCA , 19-Сен-23 23:35 
Покажи, откуда взялся ./.libs/libgnu.a

В нём почему-то не оказалось libgettextpo_version


"Проблема при сборке Linux From Scratch, пакет Gettext-0.22"
Отправлено vvm13 , 20-Сен-23 08:56 
> Покажи, откуда взялся ./.libs/libgnu.a
> В нём почему-то не оказалось libgettextpo_version

Вот именно.

Но ведь по умолчанию make лог в файл не пишет? По крайней мере, сналёту я не нашёл, а в советах к BLFS я увидел использование tee, что намекает.

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