我尝试在我的新M1 Mac上的R中设置模板模型构建器(TMB)包。我已经安装了硅版本的R,并遵循和安装了来自CRAN的TMB。然而,当我用compile("file.cpp")
编译了一个C++模板函数后,我在运行dyn.load(dynlib("file"))
时得到以下错误:(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))
.
我试着遵循here的提示,希望这能改变编译架构。有人知道如何解决这个错误吗,或者有人能够在M1 Mac上设置和使用TMB吗?
1条答案
按热度按时间nvbavucw1#
此错误消息表明编译的C模板函数是为x86_64架构构建的,与M1 Mac使用的arm64e架构不兼容。要解决此问题,您需要专门为arm64e架构编译C模板函数。以下是在M1 Mac上为arm64e架构编译C模板函数的步骤:
1.确保已安装所需的工具:您需要在M1 Mac上安装Xcode以及Xcode的命令行工具。您可以通过在终端中运行以下命令来安装命令行工具:
xcode-选择-安装
1.设置所需的环境变量:您需要设置以下环境变量,以确保arm64e架构使用正确的编译器和库:
导出路径= "/库/开发人员/命令行工具/usr/bin:$PATH "导出CC = clang导出CXX = clang ++
1.编译C模板函数:现在您已经设置了所需的环境变量,可以使用以下命令编译C++模板函数:
R CMD SHLIB文件. cpp-拱形臂64e
这将为arm64e架构生成一个共享库文件(. so)。然后您可以使用R中的dyn. load(dynlib("file"))加载此库文件。我希望这有助于解决您在M1 Mac上设置TMB的问题。如果您仍然遇到问题,您可能需要考虑联系TMB社区以获得进一步的帮助。