Google测试链接错误:文件是为存档而构建的,而不是链接的架构(macOS)

时间:2019-04-05 21:35:56

标签: googletest

我正在尝试在Mac上运行Google Test(其C ++单元测试框架),但是在尝试编译该库时遇到了问题。

以下命令运行正常:

export GTEST_DIR="path/to/g/test/"

g++ -std=c++11 -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
    -pthread -c ${GTEST_DIR}/src/gtest-all.cc

ar -rv libgtest.a gtest-all.o

当尝试实际编译单元测试时,出现链接错误,提示“ libgtest.a:文件是为存档而构建的,而不是要链接的体系结构(x86 / 64)”。。 / p>

1 个答案:

答案 0 :(得分:0)

Mac似乎不喜欢该命令:

$ ar -rv libgtest.a gtest-all.o

用以下命令替换此命令可解决我的问题:

$ libtool -static -o libgtest.a gtest-all.o

我写了一个简单的脚本来自动克隆Google Test库,然后构建并链接它。所需要做的就是将此脚本添加到您的主项目目录中,并赋予其执行权限(例如,先运行$ chmod 777 googleTestSetup.sh,然后运行$ ./googleTestSetup.sh

https://gist.github.com/eagi223/0ba30b0b36b18f4de07943d9228dd73a