当前位置: 首页 > Linux

基于cmake的交叉编译工具链

时间:2023-04-06 04:25:51 Linux

一、基本概念1、什么是交叉编译交叉编译是在机器A上编译生成,在机器B上运行,两台机器的机器指令不同。2.宿主和目标是什么?宿主机(host)是指使用交叉编译工具链进行编译的宿主机。一般配置比较高,比如PC主机;目标(target)是指运行交叉编译的可执行程序。资源有限的机器,比如嵌入式开发板。3.什么是工具链?一个工具链一般由编译器、链接器、解释器和调试器组成,还包括目标机的头文件、库文件等编译资源。4.cmake工具链变量2.编译过程3.编译方式1.cmake命令行编译命令#通过CMAKE_TOOLCHAIN_FILE指定交叉编译工具链文件cmake-DCMAKE_TOOLCHAIN_FILE="/path/to/my-cmake-toolchain-file.cmake"..交叉编译工具链文件是一个cmake文件,后缀为.cmake文件。二、cmake-gui图形界面编译cmake-gui界面四、cmake工具链变量详解1、目标系统变量CMAKE_SYSTEM_NAME目标机器的操作系统名称目标机器的操作系统名称的值不同系统:Linux、Android、QNX、WindowsCE、WindowsPhone、WindowsStore(Windows10或WindowsStore)CMAKE_SYSTEM_PROCESSOR目标系统硬件或CPU架构不同CPU架构取值:arm(ARM)、x86(X86)2.交叉编译器CMAKE_C_COMPILERC语言编译器目标系统的在这里可以设置变量CMAKE_CXX_COMPILER目标系统的C++语言编译器这里可以设置变量为完整路径或文件名3.外部依赖库CMAKE_FIND_ROOT_PATH表示使用到的一系列相关文件夹路径的根路径通过目标板的CMAKE_FIND_ROOT_PATH_MODE_XXX在根路径及其子目录下搜索。CMAKE_FIND_ROOT_PATH_MODE_PROGRAM指定了可执行程序在交叉编译时的搜索模式。通用值BOTHCMAKE_FIND_ROOT_PATH_MODE_INCLUDE指定交叉编译时头文件的查找方式。通用值ONLYCMAKE_FIND_ROOT_PATH_MODE_LIBRARY指定交叉编译时库文件的查找方式。开发包在交叉编译时的查找方式一般取ONLY。交叉编译搜索模式NEVER意味着不在您的CMAKE_FIND_ROOT_PATH设置的目录中搜索。ONLY表示仅在您的CMAKE_FIND_ROOT_PATH设置的目录中搜索。BOTH表示首先在您的CMAKE_FIND_ROOT_PATH设置的目录中搜索。搜索找到全局路径5.应用场景1.官方示例#Linux交叉编译工具链文件set(CMAKE_SYSTEM_NAMELinux)set(CMAKE_SYSTEM_PROCESSORarm)set(CMAKE_SYSROOT/home/devel/rasp-pi-rootfs)set(CMAKE_STAGING_PREFIX/home/devel/stage)设置(工具/home/devel/gcc-4.7-linaro-rpi-gnueabihf)设置(CMAKE_C_COMPILER${tools}/bin/arm-linux-gnueabihf-gcc)设置(CMAKE_CXX_COMPILER${tools}/bin/arm-linux-gnueabihf-g++)设置(cmake_find_root_mode_pargram两者)设置(cmake_find_root_root_mode_library)set(cmake_find_mote_mode_inc_inc_inc_ind_inc_makhelt)set(cmake_make_find_mobist)线编译图形界面编译6.参考链接交叉工具链CMake交叉编译CMAKE_SYSTEM_NAME值

最新推荐
猜你喜欢