如何使用-v选项来查看cmake链接器错误的详细信息?我找到了两个现有问题,但一个是针对Xcode构建的,另一个是针对NDK构建的。它们在这里:use -v to see invocation? 和 How to use cmake -v invocation to help find linker error。我正在使用标准的cmakelists.txt方法,我的系统是OSX Mojave。出现的错误如下:
Undefined symbols for architecture x86_64:
"Image::createImage(int, int, int)", referenced from:
_main in tutorial.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有人在Stack Overflow的问题评论中展示了我正在尝试做的事情:
...you could use -v to see the linker invocation to see what's going wrong. It would show you this link line:
"/usr/bin/ld" -demangle -dynamic -arch x86_64
-macosx_version_min 10.6.8 -o a.out -lcrt1.10.6.o
/var/folders/zl/zlZcj24WHvenScwjPFFFQE+++TI/-Tmp-/cc-hdOL8Z.o
-lSystem /Developer/usr/bin/../lib/clang/3.0/lib/darwin/libclang_rt.osx.a
我是一个cmake新手,我已经尝试在我的CMakeLists.txt文件中使用以下所有内容,但它们都没有起作用:
add_link_options(-v)
add_link_options("-v")
target_link_options(myexec PUBLIC -v)
target_link_options(myexec PUBLIC "-v")
target_link_options(myexec PUBLIC "LINKER:-v")
add_link_options
和target_link_options
是在CMAKE 3.13中添加的。 - JustinCBadd_link_options("LINKER:-v")
吗?根据 CMAKE 文档(https://cmake.org/cmake/help/latest/command/add_link_options.html),如果你的 CMAKE 设置使用编译器(gcc
/clang
)来链接内容,那么你需要这样做。此外,我会检查是否缺少库、32 位库或任何编译为 32 位的内容。 - JustinCB