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

交叉编译与CMake
EN

Unix & Linux用户
提问于 2012-11-19 23:19:02
回答 1查看 2.3K关注 0票数 4

我正在尝试交叉编译CGAL在amd64 Linux机器上的ARM架构。CGAL使用CMake进行构建。

CGAL有几个依赖项,包括GMPMPFR库。当CMake运行时,它需要确定这些依赖项的版本。为了找到版本,CMake编译并运行了几个小型测试程序,这些程序只需链接到这些库并输出它们的版本。在常规的、非交叉编译的构建过程中,这是很好的。

但是当我交叉编译时,这些测试程序自然不会在主机上运行。下面是一个例子:

代码语言:javascript
复制
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
/opt/Company/ArmTools_GCC435_GLIBC_Q3_2011/bin/arm-rc-linux-gnueabi-g++        -fPIC CMakeFiles/cmTryCompileExec.dir/print_GMP_version.cpp.o  -o cmTryCompileExec -rdynamic /home/pmw/Software-Engineering/build/Lib/mpir-2.6.0/arm/lib/libgmp.a
gmake[1]: Leaving directory `/home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp'
/home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp/cmTryCompileExec: /home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp/cmTryCompileExec: cannot execute binary file

-- USING GMP_VERSION = 'unknown'

我发现建议 (如果我正确理解的话)可以显式地指定GMP版本;这应该可以防止CMake尝试并无法确定它。因此,我创建了一个包含以下行的文件:

代码语言:javascript
复制
SET(GMP_VERSION 2.6.0)

并使用参数CMake调用-C path/to/my/file。但这并没有改变什么。然后,我尝试使用参数CMake调用-DCMAKE_TOOLCHAIN_FILE=/path/to/my/file。再说一次,没有效果。但是,我看到CMake能够找到并解析这个文件。

那么,我如何说服CMake不要试图在主机上构建和执行交叉编译的程序呢?

如果这个Unix & Linux站点不是这个问题的最佳位置,我将事先表示歉意。上周,我把我的问题发到了CGAL邮件列表上 (现在是谷歌“交叉编译cgal”的前三名;我很有名!)但没有收到回复。

EN

回答 1

Unix & Linux用户

发布于 2012-11-20 17:34:20

看看CMake维基,我相信您需要稍微修改一下CMAKE_CROSSCOMPILING变量和CMake的缓存(这些都是在wiki中描述的)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/56162

复制
相关文章

相似问题

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