Iconv库多次安装导致错误

时间:2014-08-28 13:18:01

标签: c++ ubuntu libraries iconv

我昨天下载了iconv,并使用以下方式安装了它:

$ ./configure --prefix=/usr/local
$ make
$ make install

当我尝试从shell运行iconv时,我抱怨找不到共享对象文件,因此我执行了export LD_LIBRARY_PATH=/usr/local/lib。然后iconv工作了。

这导致我的应用程序出错。我不知道其中一个源文件已经包含iconv.h。今天我在eclipse中多次成功构建了调试版本,但是在发布版本中,我遇到了这些错误:

undefined reference to `libiconv_close' 
undefined reference to `libiconv_open'  
undefined reference to `libiconv'

然后我惊慌失措,跑了make uninstall,重新启动,但问题仍然存在。我怎样才能让我的程序再次运行?

ldconfig -v | grep "iconv" shows:
libiconv.so.2 -> libiconv.so.2.5.1

我在Ubuntu 12.04 LTS

1 个答案:

答案 0 :(得分:1)

LD_LIBRARY_PATH是一个覆盖,应该仅使用 进行调试,或者解决那些难以修复的错误。

在任何情况下都不应该在您的环境中全局设置它,因为您在此处描述的内容迟早会发生,尤其是当您将手动编译的软件安装到系统目录时...(问题:为什么你没有通过你的软件包管理器安装iconv吗?总是应该是你的首选。)

如果您的iconv安装需要库路径,请使用 local 覆盖创建别名:

alias iconv="LD_LIBRARY_PATH=/usr/local/lib iconv"

这使iconv正确运行,但不会影响其他包或构建进程。


下划线,找到export LD_LIBRARY_PATH=...(无论你在哪里放置它),然后摆脱它。这应该会使您的应用程序再次正确编译(当然,除非您通过手动安装/卸载将您的系统添加到/usr ...)