我正在尝试从gcc-5.0
上的源代码安装OS X 10.7.4
,并在gcc-4.2
和/usr
中安装(苹果内置的)gcc-5.0
。安装在gmp
中的适当版本的gcc依赖项(mpfr
,mpc
,/usr/local
),它们都可以正常工作。我尝试(重新)安装gcc-5.0的原因是因为我想将其安装到/usr/local/gcc-5.0
之类的单独文件夹中,因此配置脚本是从空gcc-5.0-build
文件夹开始的)>
../gcc-5.0-src/configure --prefix=/usr/local/gcc-5.0 --with-gmp=/usr/local/lib --with-mpfr=/usr/local/lib --with-mpc=/usr/local/lib --enable-languages=c,c++
在make
和大约1GB的编译文件之后,出现此错误(被截断)
dyld: Symbol not found: __ZNKSt11logic_error4whatEv
Referenced from: <my-build-dir>/x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib
Expected in: flat namespace
浏览了Stackoverflow中的许多网页和帖子后,我尝试了各种方法,例如:
在LDFLAGS="-flat_namespace"
之前添加./configure
使用Apple构建的gcc-4.2
而不是gcc-5.0
但幸运的是,我仍然会遇到此错误。
检查libstdc++.6.dylib
nm -g x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib | grep __ZNKSt11logic_error4whatEv
返回:U __ZNKSt11logic_error4whatEv
,因此其中包含有问题的符号。
otool -hv x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib
返回(截断的)DYLDLINK TWOLEVEL
,表示它是两级名称空间lib。
我的问题是:
1-在消息 @ G.M发表评论后。该符号未在所讨论的库中定义,因此使Expected in: flat namespace
中是否表示编译器绝对只需要平面名称空间库?我的意思是,绝对不可能使用此两级名称空间lib?flat namespace
的存在与否无关紧要,因为引起问题的是库的 content 而不是类型。>
2-我应该怎么做才能解决此问题并编译gcc-5.0
?
谢谢。
答案 0 :(得分:0)
我在发布模式下运行应用程序时遇到了相同的错误。 经过两天的搜索,我设法通过关闭动态库项目构建设置中的默认隐藏的符号来解决该问题。 希望这对您和其他具有相同错误的人有所帮助。