Ubuntu编译安装Cocos2d-x遇到“对‘libiconv*’未定义的引用”的问题

对‘libiconv*’未定义的引用

对‘libiconv_open’未定义的引用

对‘libiconv_close’未定义的引用


这个错误与GCC版本无关。

此时,你的系统内一定存在两个iconv.h,其中一个是系统自带的,在/usr/include/iconv.h,一个是你自己编译安装的,在/usr/local/include/iconv.h。

第二份iconv可能是你在编译安装其他app比如php时自动编译安装的。

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

我试过指定-liconv和-DLIBICONV_PLUG选项(cmake后的flags.make文件里),甚至在CMakeLists.txt里加入了cocos_find_package(ICONV ICONV REQUIRED)和cocos_use_pkg(${APP_NAME} ICONV)两句(我重写了FindICONV.cmake),都没用。(当然-liconv可以用了编译cpp-empty-test)。

当然,我也按照上面那个文章试了nm了一下/lib/i386-linux-gnu/libc.so.6,但是并没有iconv的足记。

我试着用-DLIBICONV_PLUG编译了一下小代码,是可行的,但是不知道为什么对于这个并没用。

so,这个“唯一方案”对于cocos2d-x的编译真的是唯一的方案。

解决方案:

暂时将/usr/local/include/iconv.h文件mv一下,比如iconv.h.bak,然后再编译安装就可以了,需要时再mv回来。这里提供一份我自己的脚本:

#!/bin/sh

if [ -e "/usr/local/include/iconv.h" ];then
 mv /usr/local/include/iconv.h /usr/local/include/iconv.h.bak
 echo "可以使用cocos2d-x了"
else
 mv /usr/local/include/iconv.h.bak /usr/local/include/iconv.h
 echo "已恢复第三方cocos2d-x"
fi

发布了15 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/plgkm6/article/details/80258744
今日推荐