我正在尝试在Mac中编译GCC 4.5.1。
我对libiconv有个问题。首先,它抱怨了架构x86_64的未定义符号,即:_iconv,_iconv_open和_iconv_close。我发现libiconv的MacPorts版本将它们重命名为:_libiconv、_libiconv_open和_libiconv_close。因此,我链接到了/usr/lib中的Mac原生libiconv,而不是/opt/ MacPorts /lib中的本地库。
Undefined symbols for architecture x86_64:
"_iconv", referenced from:
_convert_using_iconv in libcpp.a(charset.o)
__nl_find_msg in libintl.a(dcigettext.o)
(maybe you meant: __cpp_destroy_iconv, _cpp_init_iconv )
"_iconv_close", referenced from:
__cpp_destroy_iconv in libcpp.a(charset.o)
__cpp_convert_input in libcpp.a(charset.o)
__nl_free_domain_conv in libintl.a(loadmsgcat.o)
"_iconv_open", referenced from:
_init_iconv_desc in libcpp.a(charset.o)
__nl_init_domain_conv in libintl.a(loadmsgcat.o)然而,在这样做之后,我试图从头开始重建它(清理和所有东西),但后来它在不同的点上抱怨未定义的符号,但这次是_libiconv,_libiconv_open和_libiconv_close。
Undefined symbols for architecture x86_64:
"_libiconv", referenced from:
_identifier_to_locale in libbackend.a(pretty-print.o)
"_libiconv_close", referenced from:
_identifier_to_locale in libbackend.a(pretty-print.o)
"_libiconv_open", referenced from:
_identifier_to_locale in libbackend.a(pretty-print.o)你知道我该怎么处理这件事吗?我已经找到了一些从MacPorts卸载libiconv的解决方案,但我不想这样做,因为我有许多依赖于它的端口。
发布于 2015-12-08 02:08:25
我通过以下方式解决了这个问题:
$ sudo port -f deactivate libiconv
$ ...build my project...
$ sudo port activate libiconv可能有一种更好的方法,但我没有直接使用GCC,所以这是一个临时的解决方法。
发布于 2014-01-30 05:43:53
我通过包含来自/usr/lib和/opt/local/lib的两个libiconv来解决这个问题。这是一个老生常谈的解决方法,如果有人有更好的解决方案,请张贴。假设[gcc-src]是gcc的源目录。我所做的如下:
在/usr/lib中使用
libiconv1.*libiconv.*复制到[gcc-src]/gcc/Makefile.in将LIBINTL = @LIBINTL@更改为LIBINTL = @LIBINTL@ -L/opt/local/lib -liconv -L/usr/lib -liconv1
CC=gcc-mp-4.7 CXX=g++-mp-4.7 ../gcc-4.7.2/configure --with-gmp=/opt/local --enable-languages=c,c++ --enable-checking=release —prefix=[gcc-src] <-必须是绝对地址。我用的是一台由gcc和g++制作的macport手机。也许使用system work too.
make
make install中的gcc和g++,二进制文件将在[gcc-src]/bin/中
发布于 2013-10-02 03:36:21
看起来您的make clean实际上并没有从build目录中删除libbackend.a;您仍然试图链接到针对MacPorts编译的代码的旧版本。手动运行rm libbackend.a (或make distclean或make spotless或其他任何可以真正清理所有内容的工具)可能会解决这个问题,对吧?
https://stackoverflow.com/questions/12619600
复制相似问题