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. 编译安装
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/