摘要:
弱符号与强符号 说明 对于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,使用编译 阅读全文
摘要:
编译基础概念 为了描述链接器脚本语言,我们需要定义一些基本概念和词汇。 链接器干的主要事情就是把输入文件整合成一个输出文件。那么输入是什么?输出是什么?怎么整合?整合的是什么信息? 输入和输出文件都是object文件格式。它们都称为目标文件。输出文件又称为可执行文件。它们的内容格式类似,都有很多的s 阅读全文
摘要:
GNU不同编译选项的区别 nostartfiles 不使用启动文件,默认使用库 nodefaultlibs 不使用默认库,默认使用启动文件 nostdlib 不使用启动文件,不使用默认库 nolibc 不使用启动文件,不使用与系统库紧耦合的库 -nostartfiles -nodefaultlibs 阅读全文
摘要:
什么是GDB 常用操作速查 GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 命令 解释 file <path-to/*.elf> 加载符号表 c Continue,继续执行被调试程序,直至下一个断点或程序结束 b 设置断点 s step,执行一行源 阅读全文
摘要:
# sourceware是谁 Sourceware是一个免费软件托管项目,大多数项目是工具链和开发人员工具。Sourceware由志愿者维护。硬件和带宽由赞助商提供。被托管的项目是独立的。 Sourceware的目标是为自由软件项目提供一个无忧、友好的家。 Sourceware的赞助商主要由Red 阅读全文
摘要:
# zsh 先确定你是用的 shell 类型,运行echo $SHELL 如果你使用的是 zsh,那么修改 /etc/zshrc 其中有一行设置 PS1的值的,修改为 `PS1="%n@%m %1~ %# "` 其它的 zsh 中转义变量 ```shell %T 系统时间(时:分) %* 系统时间( 阅读全文