cmake交叉编译
1.MobaXterm个人版升级专业版2.VS studio上查看标准cout输出3.MQTT broker部署与测试4.局部变量的引用传递的风险
5.cmake交叉编译
6.“编码器UVW故障或内部故障”解决方法7.康威生命游戏8.C++标准库joinable和join的用法9.上传代码到新的远程仓库的方法10.Ubuntu查看包信息命令11.段错误的形成原因12.C++陷阱—指定的返回类型的函数实际没有返回时会发生什么13.python sklearn包的安装14.C++编译器对溢出的默认处理15.安装nginx时报错解决(configure error: the HTTP gzip module requires the zlib library)16.C++观察者模式的实现17.C++陷阱 — C++ auto变量类型推导18.浅谈数字证书19.C++之#和##符号的用法20.常用快排算法实现21.linux C++程序测试命令的一种实现22.几种常用数据结构的C语言实现23.umount命令提示busy无法正常卸载的解决24.关于C++作用域符的一种用法25.二维字符串数组的传参时与指针互转时的问题26.C语言月份字符转月份数值实现27.C语言实现split函数28.在代码中获得linux shell命令执行结果的方法29.CMake通过外部传参执行不同逻辑的2种方案30.模板函数使用类型推导时的bug31.Qt程序加载Qt platform plugin 'xcb' 出错问题解决32.cmake 之make pack报错解决前置条件:linux系统已经安装cmake工具,unbuntu下安装方法sudo apt install cmake
,已下载好交叉编译工具链
x86平台的编译方法
camke <dir> #CMakeLists.txt所在目录
make -j8
其他平台
先设置PATH变量,增加交叉编译工具目录。
在本项目目录新建一个toolchain.cmake
文件,增加如下代码,然后在CMakeLists.txt
中include(toolchain.cmake)
,当然,也可以直接写在CMakeLists.txt
中
set(CMAKE_SYSTEM_NAME Linux) #一定要加
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc-5)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++-5)
set(CMAKE_SYSROOT /home/huanglidi/work/tool/CrossSysroot/16.04)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_SYSROOT}/opt/bros ${CMAKE_SYSROOT}/opt/cyber)
set(CMAKE_LIBRARY_PATH ${CMAKE_SYSROOT}/usr/local/lib ${CMAKE_SYSROOT}/usr/lib/aarch64-linux-gnu ${CMAKE_SYSROOT}/usr/lib)
set(CMAKE_INCLUDE_PATH ${CMAKE_SYSROOT}/usr/local/include ${CMAKE_SYSROOT}/usr/include/aarch64-linux-gnu ${CMAKE_SYSROOT}/usr/include)
变量解释:
set(CMAKE_SYSTEM_NAME Linux)
:该指令必须存在,其目的是设置目标机使用的操作系统名称,支持Linux
,QNX
,WindowsCE
,Android
等。如果没有操作系统,那么就写 Generic
。执行该指令后,cmake
变量——CMAKE_CROSSCOMPILING 会自动被设置为 TRUE
,此时 cmake
就会“知道“现在执行的是交叉编译;
由于 cmake
无法自动获取目标机器信息,因此需要显式指明编译工具。
CMAKE_C_COMPILER
:设置 C 编译器;如果没有设置PATH环境变量,先设置PATH变量
CMAKE_CXX_COMPILER
:设置 c++ 编译器
注意:因为编译生成程序时,不单单需要编译器,还需要链接器等其他工具,所以要将交叉编译工具所在目录设置到PATH,才能保证生成成功!!
编译命令
mkdir build
cd build
cmake ../
make -j8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律