libiconv 未定义的引用解决

2020-06-25  本文已影响0人  子衿我心

最近在安装libconfig库时,编译期间出现找不到libiconv库的问题
/usr/local/lib/../lib64/libstdc++.so: undefined reference to "libiconv"
在仔细检查重新安装了libiconv库之后,问题依然无法解决。因此根据make时的记录进行追溯,发现链接错误出现在/example/c++样例编译期间

make[3]: 离开目录“/home/downloads/libconfig-1.7.2/examples/c”
Making all in c++
make[3]: 进入目录“/home/downloads/libconfig-1.7.2/examples/c++”
  CXX      example1.o
  CXXLD    example1
/usr/local/lib/../lib64/libstdc++.so: undefined reference to `libiconv'
/usr/local/lib/../lib64/libstdc++.so: undefined reference to `libiconv_close'
/usr/local/lib/../lib64/libstdc++.so: undefined reference to `libiconv_open'
collect2: error: ld returned 1 exit status

手动去查看/example/c++/下的Makefile文件时发现

LIBOBJS =
LIBS = 
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =

其中LIBS变量存放编译时所需引用的外部库,而这里默认置空,我的环境使用的是CentOS7,而这里需要手动添加libiconv库的引用,因此将其改为

LIBOBJS =
LIBS = -liconv
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =

手动指定链接libiconv库。之后重新执行make,成功编译并链接。

后记

类似库找不到定义的问题原因可能有很多,但大致都可以按照一下思路进行解决

上一篇下一篇

猜你喜欢

热点阅读