Назад | Перейти на главную страницу

/ usr / bin / ld: не удается найти -ll

Я пытаюсь построить 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 переключатель для отправки.