r语言 - 在M1 Mac上使用模板模型生成器:不兼容的架构错误



我正试图在我的新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')) .

我尝试遵循这里的提示,希望这会改变编译体系结构。有人知道如何解决这个错误吗?或者有人能够在M1 Mac上设置和使用TMB吗?

此错误消息表明编译的c++模板函数是为x86_64架构构建的,这与M1 Mac使用的arm64e架构不兼容。要解决这个问题,需要专门为arm64e架构编译c++模板函数。以下是在M1 Mac上为arm64e架构编译c++模板函数的步骤:

  1. 确保你已经安装了所需的工具:你需要在你的M1 Mac上安装Xcode,以及Xcode的命令行工具。您可以通过在终端运行以下命令来安装命令行工具:

    xcode-select——安装

  2. 设置所需的环境变量:您将需要设置以下环境变量,以确保为arm64e体系结构使用正确的编译器和库:

    =出口路径"/图书馆/开发/CommandLineTools/usr/bin: PATH&quot美元;出口CC =叮当声出口CXX =叮当声+ +

  3. 编译c++模板函数:现在您已经设置了所需的环境变量,您可以使用以下命令编译c++模板函数:

    R CMD SHLIB file.cpp -arch arm64e

这应该为arm64e体系结构生成一个共享库文件(.so)。然后,您可以在r中使用dyn.load(dynlib("file"))加载此库文件。我希望这有助于解决您在M1 Mac上设置TMB的问题。如果您继续遇到问题,您可能需要考虑向TMB社区寻求进一步的帮助。

最新更新