在执行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:错误: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:* [世界]错误2
[16071009 @ compute-01 NLP] $
答案 0 :(得分:0)
-liconv在链接命令中不显示,所以这就是为什么 获取未定义的引用。尝试放入:
SYS_LIBRARIES = -L<path-to-libiconv_install> -liconv
例如,如果您在Ubuntu x64上安装srilm,请编辑以下文件:common / Makefile.site.i686-m64。确保-L选项指向具有libiconv.so或libiconv.a文件的目录。
对我来说,libiconv使用make在Ubuntu 18.04 x64上安装srilm,位于/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
的解决方案