OS X Mavericks上gtest的链接器错误

时间:2013-11-08 14:18:40

标签: c++ macos gcc googletest

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

brew tap homebrew/versions
brew install [flags] gcc48

我用

在本地构建了gtest
cmake .
make

它产生了libgtest.a

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

brew install log4cxx

一切看起来都很好。但是当我现在尝试编译时,我得到this massive linker error关于未定义的符号,我无法解释。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

此问题与编译时-stdlib=的使用有关。我无法告诉您哪个值(libstdc++libc++)是正确的值,但它必须与编译时库使用的值相匹配。

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

答案 1 :(得分:0)

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

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