Arm64架构下交叉编译x86_64程序时MKL静态库链接问题咨询
Arm64 macOS交叉编译x86_64程序的MKL静态库适配方案
你的链接错误ld: unknown file type in 'libmkl_core.a', 'libmkl_sequential.a', 'libmkl_intel_lp64.a',核心原因是当前使用的MKL静态库为Arm64架构版本,与交叉编译目标x86_64架构不兼容,链接器无法识别异架构的二进制文件格式。
需替换的MKL库文件
- 必须使用Intel MKL针对x86_64 macOS编译的静态库,而非Arm64版本。你之前x86_64本地编译可用,是因为当时环境与库架构匹配;Arm64 macOS交叉编译时,需切换到MKL安装包的
intel64目录下选取对应文件:libmkl_core.a(x86_64架构版本)libmkl_sequential.a(x86_64架构版本)libmkl_intel_lp64.a(x86_64架构版本)
额外注意事项
- 编译时需通过
-arch x86_64参数明确指定目标架构,确保编译器、链接器全程以x86_64模式工作。 - 可通过
lipo -info libmkl_core.a命令验证库架构,输出为x86_64即为正确适配的库文件。
内容的提问来源于stack exchange,提问作者Kirill Golikov
相关产品推荐
相关产品推荐

