OS X Mavericks 上的 gtest 的链接器错误

Linker error for gtest on OS X Mavericks

本文关键字:链接 错误 gtest Mavericks 上的 OS      更新时间:2023-10-16

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

brew tap homebrew/versions
brew install [flags] gcc48

我在本地构建了gtest

cmake .
make

它产生了libgtest.a.

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

brew install log4cxx

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

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

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

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

当您通过 c++filt 运行时,这会给您一个不匹配,其中一些符号是 std::__1::foo,而有些符号是 std::foo。