0

我已经使用gtest单元测试库工作了一段时间。最近我设置了一台新的开发机器并升级到Mac OS X 10.9。我安装了

brew tap homebrew/versions
brew install [flags] gcc48

gtest我在本地构建

cmake .
make

它产生了libgtest.a

我项目的第二个依赖项是日志库log4cxx。我像往常一样得到它:

brew install log4cxx

这一切看起来都很好。但是当我现在尝试编译时,我得到了这个关于我无法解释的未定义符号的大量链接器错误。有任何想法吗?

4

2 回答 2

2

这个问题涉及到-stdlib=编译时的使用。我不能告诉你哪个值 (libstdc++libc++) 是正确的值,但它必须与库在编译时使用的值相匹配。

我想你需要挖掘自制日志才能找到答案。

于 2013-11-08T14:24:24.270 回答
0

要查看的另一个技巧是确保您正在编译的所有内容都对您链接在一起的所有可执行单元使用相同的 -mmacosx-version-min 值。如果您没有定义,Mavericks 将使用 10.9,并且默认情况下它似乎与 libc++ 链接,而如果您使用 -mmacosx-version-min=10.8 或更低版本,它将默认与 libstdc++ 链接。

这会给你一个不匹配的地方,当你通过 c++filt 运行它们时,你的一些符号是 std::__1::foo 和一些是 std::foo。

于 2013-11-14T15:51:38.450 回答