Я пытаюсь построить LIBS из Тайской лаборатории компьютерной лингвистики из источника.
Я следую инструкциям в их readme, в которых говорится
2. Installation --------------- 2.1) In the libs base directory, type: $ ./configure $ make
Однако ld жалуется на «не удается найти -ll».
if gcc -DHAVE_CONFIG_H -I. -I. -I../.. -W -Wall -I../../src/libs -g -O2 -MT libs-predict.o -MD -MP -MF ".deps/libs-predict.Tpo" -c -o libs-predict.o libs-predict.c; \ then mv -f ".deps/libs-predict.Tpo" ".deps/libs-predict.Po"; else rm -f ".deps/libs-predict.Tpo"; exit 1; fi mode=link g++ -g -O2 -o libs-predict libs-predict.o -L../../src/libs -llibs -lm -ll /usr/bin/ld: cannot find -ll collect2: ld returned 1 exit status make[3]: [libs-predict] Error 1 (ignored)
Что это за библиотека и какой пакет мне нужно установить, чтобы получить ее?
Библиотека libl.a классически является вспомогательной библиотекой для AT&T Lex - она предоставляет фиктивную версию yywrap()
и main()
, и некоторые другие вспомогательные функции. Если вы используете Flex, то я не думаю, что нужна какая-либо библиотека - код самодостаточен (пока вы предоставляете свою собственную версию yywrap
; если нет, используйте -lfl
). Итак, вам, вероятно, просто нужно организовать удаление символа '-ll
'из командной строки.
Если это слишком сложно, создайте себе файл garbage.c
содержащий:
int podunk = 0;
Скомпилируйте его в garbage.o
и создать манекен libl.a
:
gcc -c garbage.c
ar r libl.a garbage.o
Компоновщик должен взять эту фиктивную библиотеку, не найти в ней ничего подходящего и продолжить свой веселый путь вперед.
при компиляции программ lex yacc ... если вы получите эту ошибку ...
Ошибка:
/usr/bin/ld: cannot find -ll
collect2: error: ld returned 1 exit status
Тогда решение для этого:
dnf install flex bison
dnf install flex-devel bison-devel
Что, если ты убежишь $(which ld)
(используя подстановку команд, или вы можете использовать обратные кавычки вместо $(…)
) вместо просто ld
?
Если это поможет, введите alias -p
и посмотрите, установлен ли у вас псевдоним для ld
команда, которая вызывает -ll
переключатель для отправки.