gpt4 book ai didi

c++ - 交叉编译 PCL 时的 CMake 和 HAVE_POSIX_MEMALIGN

转载 作者:行者123 更新时间:2023-11-28 04:41:21 26 4
gpt4 key购买 nike

我正在尝试使用 Jetson 工具链 (GCC 4.8.5) 在 Docker 中为 ARM 交叉编译 pcl-1.8.1。在 CMake 配置期间,我得到:

...

-- 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 测试的退出代码。

最佳答案

try_run命令 CMake 编译并运行一些代码

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

变量名称 HAVE_POSIX_MEMALIGN_EXITCODE 表明,需要运行 POSIX_MEMALIGN 功能测试,并且变量包含该测试的结果。

  1. 如果您知道目标机器支持该功能,您可以将缓存变量设置为0(这意味着“成功”)。或者,如果目标机器不支持该功能,您可以将该变量设置为任何非零值。

  2. 或者,您可以将测试的可执行文件复制到目标机器,在那里运行并检查结果。之后,根据该结果设置缓存变量。

  3. 此外,现代 CMake 支持设置模拟器,因此 CMake 无需用户手动干预即可运行交叉编译的可执行文件。参见 CMAKE_CROSSCOMPILING_EMULATOR 的描述变量。

关于c++ - 交叉编译 PCL 时的 CMake 和 HAVE_POSIX_MEMALIGN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50133426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com