qemu cmake-arm交叉构建知一二

原创
2022/07/21 21:54
阅读数 114

gcc版本对c++11的支持情况

表 2 不同GCC版本支持的C++编译标准

GCC 版本 C++常用标准
C++98/03 C++11 C++14 C++17 GNU++98 GNU++11 GNU++14 GNU++17
10.1 ~ 8.4 c++98/c++03 c++11 c++14 c++17 gnu++98/gnu++03 gnu++11 gnu++14 gnu++17
7.5 ~ 5.5 c++98/c++03 c++11 c++14 c++1z(部分支持) gnu++98/gnu++03 gnu++11 gnu++14 gnu++1z(部分支持)
4.9.4 ~ 4.8.5 c++98/c++03 c++11 c++1y(部分支持)   gnu++98/gnu++03 gnu++11 gnu++1y(部分支持)  
4.7.4 c++98 c++11(部分支持)     gnu++98 gnu++11(部分支持)    
4.6.4 c++98 c++0x(部分支持)      gnu++98 gnu++0x(部分支持)    
4.5.4 c++98 c++0x(部分支持)      gnu++98 gnu++0x(部分支持)  

 

 

参考:

http://c.biancheng.net/view/8053.html

 

 

--------qemu

一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。

二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。

 

简单理解就是硬直通 和软翻译(不用考虑了)

 

参考:

https://blog.csdn.net/qq_33745102/article/details/116860287

https://blog.csdn.net/hunanchenxingyu/article/details/43230229

 

--------cmake-arm交叉构建

参考:https://zhuanlan.zhihu.com/p/100367053

1、生成一个arm.cmake文件 设置编译器为arm交叉gcc/g++工具链

2、cmake -DCMAKE_TOOLCHAIN_FILE= path/CrossCompile.cmake src-path 生成标准unixmakefiles文件

3、make all -j 4构建

 

如果构建OS gcc版本太低 可以选择自己编译高版本的gcc 但这预估会有更大的工作量

首先要确定项目在x86下最编译器版本的最小依赖 根据这个最小闭环版本去开展工作 目标版本和原始版本差距越小适配的工作量越少

第一 系统版本能不能调 第二才接下来才是目标版本gcc构建 目标arm交叉工具链的构建 

高版本gcc 会依赖更高版本的各种库甚至是glibc库

这种网状依赖工作量在x86、arm架构下工作会在一定时间内闭环

但是在新架构体系或者说不成熟的架构会逐渐发散到不可收敛  怎么办

聚焦核心包 选择兼容版本 app层面撤掉某些编译器新支持功能等手段 

当然最重要的就是长期战斗 闭环一个一个包构建出来 运行起来 没有捷径

 

展开阅读全文
c++
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部