
Compile,Link
编译和链接
「已注销」
本博客现只用于学习用,可能会转载他人的知识,若有涉及到您的版权问题,请与我联系。
展开
-
C++ name mangling(命名粉碎规则) 编译器的函数名修饰规则
name mangling跟函数重载紧密相关。mangling的目的就是为了给重载的函数不同的签名,因此调用函数的时候才好确认。不同的编译器可能规则不一样。举个例子。原文件:main.cc/// @author zhaolu/// @file main.ccnamespace zhao { class test { public: void func(...原创 2020-02-11 23:15:03 · 2342 阅读 · 0 评论 -
ELF - Executable and Linkable Format(可执行和可链接文件格式)
在计算机科学中,ELF是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。常用扩展名有o,so,elf,prx。分析ELF文件有助于理解一些重要的系统概念,例如程序的编译和链接,程序的加载和运行等。核心转储是指: 操作系统在进程收到某些信号而终止时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。ELF文件类型可重定位文件:...原创 2020-02-11 10:24:09 · 923 阅读 · 0 评论 -
C/C++ 静态库与动态库(静态链接与动态链接的区别)
什么是库?库是已经写好的,成熟的,可以复用的代码。程序员编程的时候都要依赖很多基础的底层库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。回顾将源程序到可执行程序的过程:预处理编译汇编链接.c.i.s.oa.out静态链接在链接阶段,将汇编生成的.o文件和所需要的库一起链接打包到可执行文件中去。因此称...原创 2020-02-10 20:45:03 · 2314 阅读 · 0 评论 -
GCC选项-Xlinker和-Wl区别
传递给链接器ld可以同时使用Xlinker和Wl两种命令。总结了一下两者区别:Xlinker后面跟的参数第一个是空格,而Wl后面跟的第一个字符是","。Xlinker一次只能传递一个参数,如果要传递两个参数:举个例子“-Map output.mp”需要写成"-Xlinker -Map -Xlinker output.mp",可以简化成"-Xlinker -Map=output.map"。而...原创 2020-02-10 17:41:12 · 4084 阅读 · 0 评论