- 博客(14)
- 收藏
- 关注
原创 从optional头文件缺失看std库升级
虽然我们工程已经切换成clang编译了,但是std库还是用的GNU的,这是因为ubuntu系统还是使用GCC进行编译的,而且暂时没有切换到clang的计划。随着标准库更新,std库优化了头文件之间的依赖关系,减少不必要的间接包含,以提高编译速度和代码清晰度。在ubuntu18,stdc++的版本为8.3.0,到ubuntu22,已经升级至12.3.0了。由于std基础库带来的差异挺麻烦的,一套代码需要兼容两个不同的std库。相同的代码,在ubuntu18不会报错,到ubuntu22就报错了。
2025-03-06 17:21:30
195
原创 Android native C++快速打印复杂结构体内容
C/C++快速打印复杂结构体内容,如何在android c++中、或者ndk c++程序中快速打印复杂结构体内容。
2023-03-22 22:42:56
835
原创 设备树解析 & i2c设备模型
1、基础概念1、总线2、手机启动流程1、MTK启动流程2、高通启动流程的差别3、设备树解析1、设备树相关2、设备树解析4、 i2c 设备初始化流程
2023-03-17 14:46:34
2513
原创 NDK编译log分析
确认编译器、platform、abis、查找两个mk,等。2:开始解析Application.mk,再解析Android.mk;加上V=1,可以把clang++编译每个文件的编译命令打印出来。3:根据mk,确定依赖,以及编译module;使用 clang++ -o进行指定依赖so。4:执行clean,删除编译历史文件;使用 llvm-strip工具。8:处理shared_lib。7:确认是否需要strip。5:开始编译src文件。
2023-03-14 17:01:02
205
原创 Linux内核、驱动笔记
Linux内核设计与实现》单内核与微内核:有助于理解内核的发展;1980年之前,所有内核都设计成单内核,单内核意味着一个单独的大过程,所有内核服务、模块运行在同一地址空间;优点:简单、高效、性能高缺点:安全、隐私问题、稳定性。所有事物的发展都先野蛮生长,由于没有人为的规则约束,事物的发展首先是以效率为优先的,等事物发展的足够影响到人了,人类就会加以一定的规则约束,这样就需要考虑很多规则、安全、隐私等问题。做一个行业很重要的是要理解当前行业处于事物发展的什么阶段。
2023-03-08 15:24:08
96
原创 GNU Binary Utilities - objcopy简单介绍
将原elf中某一段拷贝出来,输出为一个elf文件,section_hello文件中还是包含mysection段,其实相当于把除了mysection其他的段删除,生成一个新的elf文件。是将目标文件(elf文件)的一部分或者全部内容拷贝到另外一个目标文件中,也可以实现目标文件的格式转换。Q: 如何将一个二进制文件,比如图片,词典一类的东西做为.o文件,直接链接到可执行文件内部呢?在原elf文件中添加一个mysection的段,这个段内容指定为hello_text文件;的目标文件可能有异常。
2023-02-24 14:13:45
2245
原创 C++声明、定义、初始化
声明 - declaration告诉编译器某个东西的名称和类型,但略去细节,比如:extern int x; //对象object声明std::size_t numDigits(int number); //function声明class widget; //class声明template<typename T>class GraphNode; ...
2019-01-12 21:58:26
936
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人