10 2023 档案
摘要:C语言运行库 任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码至少包括入口函数,及其所依赖的函数所构成的函数集合。当然,它还理应包括各种标准库函数的实现。 这样的一个代码集合称之为运行时库(Runtime Library)。而C语言的运行库,即被称为C运行库(
阅读全文
摘要:链接脚本由一系列语句组成,语句分两种,一种是命令语句,另外一种是赋值语句。链接脚本语法像C语言,主要有如下几点相似之处。 语句之间使用分号";"作为分割符。 原则上讲语句之间都要以";"作为分割符,但是对于命令语句来说也可以使用换行来结束该语句,对于赋值详吾句来说必须以";"结束 表达式与运算符 脚
阅读全文
摘要:弱符号与强符号 说明 对于C/C++语言来说,编译器默认函数和初始化了的全局变量为强符号,未初始化的全局变量为弱符号。我们也可以通过GCC的"__attribute__((weak))"来定义任何一个强符号为弱符号。注意,强符号和弱符号都是针对定义来说的,不是针对符号的引用。 比如我们有下面这段程序
阅读全文
摘要:为了学习使用objdump和size命令,以simple_section.c为例进行分析。 编译环境是x86 ubuntu下的交叉编译arm指令: 首先编译这个文件。 arm-none-eabi-gcc -c simple_section.c 命令解释 objdump 作用:分析二进制文件的内容信息
阅读全文
摘要:为了学习使用objdump和size命令,以simple_section.c为例进行分析。 编译环境是x86 ubuntu,首先编译这个文件。 gcc -c simple_section.c 命令解释 objdump 作用:分析二进制文件的内容信息 objdump --help Usage: obj
阅读全文
摘要:linux 资料 对i2c和smbus的协议进行了总结提炼 https://docs.kernel.org/i2c/index.html i2c和smbus的时钟和电气特性差异 https://www.totalphase.com/support/articles/200349186-differe
阅读全文
摘要:gnu解释 https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html 从最终可执行镜像中删除未使用的function和data,是由链接器来完成的。需要以下几个步骤 function和data编译成单独的section,使用编译
阅读全文