提问人:FuzzyBall 提问时间:2/27/2022 更新时间:5/9/2022 访问量:1758
无法将 macOS-arm64 的库与 macOS-arm64 的可执行文件链接
Cannot link library for macOS-arm64 with executable for macOS-arm64
问:
我在 **Monterey M1 MacBook** 上创建构建系统时遇到了一些麻烦:
到目前为止,我有一个有效的 Makefile 来构建和链接库。
(简化:所有.cpp文件都变成 .o 文件→ >
→效果很好g++ -c
ar -r <.o files> libmyLibrary.a
问题:
当我尝试构建一个使用上述 .源文件的编译工作正常,但我收到以下(看似无意义的)链接器警告:libmyLibrary.a
ld: warning: ignoring file /Path/to/lib/libmyLibrary.a,
building for macOS-arm64 but attempting to link with file built for macOS-arm64
→我得到一些Undefined symbols for architecture arm64: ... <stuff from library> referenced from: <stuff from executable>
为与库相同的目标进行构建怎么会成为问题?
答:
1赞
FuzzyBall
2/28/2022
#1
在更改链接库的方式后,我设法编译了可执行文件。我的 Makefile 还链接了一个预编译的头文件。.pch
删除它后,它工作正常。
评论
1赞
Paul Sanders
3/2/2022
有趣。如果这是根本原因,则来自非常无用的错误消息。ld
6赞
George Morgan
5/9/2022
#2
这是由于系统中安装了不兼容的版本所致。 在自制软件中,binutils 似乎被破坏了。这可以通过符号链接来解决 ,或使用系统。ar
ar
llvm-ar
ar
ar
评论
0赞
Carlos Granados
6/13/2022
这是正确的答案。如果您看到此消息,则必须破坏系统中的程序。我跑了,然后用了,错误消失了ar
brew install llvm@12
llvm-ar
ar
评论
file libmyLibrary.a
ar -r /path/to/lib/libmyLibrary.a src/stl.hpp.gch <lots of .o files>
->ar: creating archive /path/to/lib/libmyLibrary.a
ar -t libmyLibrary.a
列表:__.SYMDEF, stl.hpp.gch, all the .o files
.o
file
ar