首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉编译时的CMake和HAVE_POSIX_MEMALIGN

交叉编译时的CMake和HAVE_POSIX_MEMALIGN
EN

Stack Overflow用户
提问于 2018-05-02 11:19:42
回答 1查看 357关注 0票数 0

我试图交叉编译pcl-1.8.1的ARM在码头与Jetson工具链(GCC 4.8.5)。在CMake配置期间,我得到:

代码语言:javascript
复制
...

-- Performing Test HAVE_MM_MALLOC
-- Performing Test HAVE_MM_MALLOC - Failed
-- Performing Test HAVE_POSIX_MEMALIGN
CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately:
   HAVE_POSIX_MEMALIGN_EXITCODE (advanced)
For details see /pcl-1.8.1/build/TryRunResults.cmake
-- Performing Test HAVE_POSIX_MEMALIGN - Failed
-- -- GCC > 4.3 found, enabling -Wabi
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success

...

通过任何更改,是否有人知道这个HAVE_POSIX_MEMALIGN_EXITCODE是什么以及在这种情况下应该是什么值?为什么这个失败是第一次呢?

我已经用同样的设置成功地构建了Boost,所以编译器正在工作。

编辑:好的,现在我知道这是HAVE_POSIX_MEMALIGN测试的退出代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 12:12:45

使用命令CMake编译和运行一些代码

如果交叉编译,代码无法运行(它可以在目标计算机上运行,而不是在执行配置的主机上运行),因此CMake请求帮助。

变量名HAVE_POSIX_MEMALIGN_EXITCODE表示,需要运行对POSIX_MEMALIGN特性的测试,并且变量包含该测试的结果。

  1. 如果您知道目标计算机上支持该特性,则可以将缓存变量设置为0 (这意味着“成功”)。或者,如果目标机器上不支持该功能,则可以将该变量设置为任意非零值。
  2. 或者,您可以将测试的可执行文件复制到目标机器,在那里运行它,并检查结果。然后,根据结果设置缓存变量。
  3. 此外,现代CMake支持设置仿真器,因此CMake可以在不需要用户手动干预的情况下运行交叉编译的可执行文件。请参见仿真器变量的说明。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50133426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档