Ошибка во время выполнения команды make для srilm

При выполнении команды make я получаю следующую ошибку:

/home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::~File()': /home/cse/phd/16071009/NLP/misc/src/File.cc:127: undefined reference to libiconv_close' /home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::reopen(char const*, char const*)': /home/cse/phd/16071009/NLP/misc/src/File.cc:167: undefined reference to libiconv_close' /home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::reopen(char const*)': /home/cse/phd/16071009/NLP/misc/src/File.cc:217: undefined reference to libiconv_close' /home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::reopen(char const*, unsigned long, int)': /home/cse/phd/16071009/NLP/misc/src/File.cc:249: undefined reference to libiconv_close' /home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::reopen(std::string&, int)': /home/cse/phd/16071009/NLP/misc/src/File.cc:273: undefined reference to libiconv_close' /home/cse/phd/16071009/NLP//lib/i686-m64/libmisc.a(File.o): в функции File::fgetsUTF8(char*, int)': /home/cse/phd/16071009/NLP/misc/src/File.cc:387: undefined reference to libiconv' /home/cse/phd/16071009/NLP/misc/src/File.cc:345: неопределенная ссылка на libiconv_open' /home/cse/phd/16071009/NLP/misc/src/File.cc:349: undefined reference to libiconv_open' collect2: error: ld вернул 1 тест состояния выхода -f../bin/i686-m64/ngram make [2]: * [../bin/i686-m64/ngram] Ошибка 1 make[2]: выход каталог /home/cse/phd/16071009/NLP/lm/src' make[1]: *** [release-programs] Error 1 make[1]: Leaving directory / home / cse / phd / 16071009 / NLP 'make: * [World] Ошибка 2 [16071009@compute-01 NLP]$

0 ответов

-Liconv нигде не появляется в команде link, поэтому вы получаете неопределенные ссылки. Попробуйте положить:

 SYS_LIBRARIES = -L<path-to-libiconv_install> -liconv

Например, если вы устанавливаете srilm в Ubuntu x64, отредактируйте этот файл: common / Makefile.site.i686-m64. Убедитесь, что опция -L указывает на каталог, в котором находится файл libiconv.so или libiconv.a.

Для меня libiconv установить Srilm на Ubuntu 18.04 x64 с помощью make находится на /usr/local/lib, Поэтому я добавляю следующую строку в файл common/Makefile.site.i686-m64:

SYS_LIBRARIES = -L/usr/local/lib -liconv

Решение от: http://mailman.speech.sri.com/pipermail/srilm-user/2014q3/001694.html

Другие вопросы по тегам