Ошибка во время выполнения команды 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