日志

[技术学习] debian centos 等linux系统编译报错 undefined reference to `libiconv'
linux系统在编译需要 libiconv的软件的时候,经常会遇到 undefined reference to `libiconv' 错误。下面简单谈谈自己遇到的这种情况处理过程。
因为自己是新手遇到这种问题了,第一反应百度吧。然后搜出来了一大堆如下的方案。
如何在 debian  Ubuntu 等linux系统安装 libiconv库

1.首先下载libiconv库到用户目录下(一般用非ROOT用户的用户目录在/ home /用户名)。
下载libiconv的命令:

也可以下载下来后拷贝到电脑后进行安装:下载地址:https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz

wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz

2.解压下载回来的libiconv,并进入到该目录。

tar zxvf libiconv-1.16.tar.gz
cd libiconv-1.16

3.配置libiconv

./configure –prefix=/usr/local

4. 编译安装

make
make install

5.创建一个文件链接到Libiconv库

ln -s /usr/local/lib/libiconv.so /usr/lib
ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2


按照上面的走了一遍 ,也安装成功了用命令 也找到了安装的路径

whereis libiconv
libiconv: /usr/lib/libiconv.so /usr/local/lib/libiconv.la /usr/local/lib/libiconv.so	

重新编译原来的软件,发现还是报错 undefined reference to `libiconv'

得回头继续百度吧,折腾半天,终于找到靠谱点的文章,把问题解决了

解决方法:

一般出现这种报错,主要原因一个是没装libiconv,一个是编译器找错了。

没装libiconv就很简单,装一下,下载地址:http://www.gnu.org/software/libiconv/#downloading,安装方法也在里面,这里不写了,目前国内打开流畅。

找错了,根本原因是开发人员没有指定所需libiconv库的绝对路径,结果编译器自己找错了

如果能改编译的源文件,那在引用libiconv库时指定你想要引入的libiconv库的绝对路径即可。

如果不能修改源文件,那么就把误导编译器的那个删掉。

我的解决方案是,备份了以下,然后直接删掉

mv /usr/local/include/iconv.h /usr/local/include/iconv.h.bak
rm /usr/local/include/iconv.h 


参考资料

https://www.cnblogs.com/lovemdx/archive/2013/06/09/3128371.html

https://tonybai.com/2013/04/25/a-libiconv-linkage-problem/


日志评论
首页 资讯 发布 发现 我的