![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux应用编程
Hongggggggg
嵌入式ICU
展开
-
查看动态库依赖信息
使用ldd命令可以打印依赖的共享库列表,可以方便我们确定可执行程序的动态库信息;常用选项:--version:显示ldd的版本ldd --version-v:显示详细链接信息ldd -v test-u:显示没有使用的依赖ldd -u test...原创 2022-01-15 10:00:00 · 462 阅读 · 0 评论 -
动态库的生成和使用
生成动态库文件gcc -fPIC -shared *c -o libTest.so-fPIC选项 这是一个编译选项,PIC是Position Independent Code的缩写,表示要生成位置无关的代码,即加载器把其加载到内存任何位置,其代码均可正常运行,所以代码中都是使用的相对地址,这是动态库所需要的一个特性。-shared选项这是一个链接选项,目的是为了告诉gcc生成动态库而不是可执行文件;使用库文件进行编译gcc test.c -o test -lTest -L.原创 2022-01-14 09:30:00 · 248 阅读 · 0 评论 -
静态库文件的生成和使用
基本介绍:在上一篇文章中我们提到过,静态库其实就是.o目标文件的集合包,如果我们要制作一个静态库的话,首先要先将源文件编译生成.o目标文件,然后再使用ar命令将目标文件打包成库文件;ar命令:作用:建立或修改备存文件,或是从备存文件中抽取文件,常见的应用是,使用ar命令将多个目标文件.o打包为静态链接库文件.a。常用选项:-r:用于将文件插入库文件中-c:用于建立库文件-t:显示库文件中所包含的文件-d:删除库文件中的成员文件静态库文件的生成:原创 2022-01-13 09:30:00 · 542 阅读 · 0 评论 -
动态库与静态库
什么是库: 库是将一些代码编译成目标文件后打包存放之后的包,是目标文件的集合。在我们设计的软件程序钟,有一些代码的出现频率很高,它们可以被当作公共代码来反复使用,为了避免重复编写代码,我们就可以把这些公共代码封装编译成为库,以便需要的时候调用,在Linux中,库分为静态库和动态库。静态库: 静态库的文件后缀为.a,一般我们会将静态库命名为libxxx.a。在链接过程中会将具体的目标文件以及静态库中引用到的内容一起链接至可执行文件中。由于静态库中的内容是在链接阶段直接被拷贝了一份到可执行文件中,所原创 2022-01-12 09:30:00 · 130 阅读 · 0 评论 -
gcc常用选项
预编译-E选项: 主要是进行预编译的处理,将头文件拓展或是宏的替换以及注释的删除等,最终将源文件处理生成.i文件,gcc -E test.c -o test.i编译 -S选项: 生成.s汇编文件gcc -S test.c -o test.s汇编 -c选项: 生成.o目标文件,最终生成的.o文件是一种中间文件,在Linux中其格式也是ELF,仅仅只是没有进行链接,所以其内容与最终的目标文件几乎是一样的。 可执行文件就是我们常说的由.bss段、.text段、.data段等..原创 2022-01-11 09:30:00 · 110 阅读 · 0 评论 -
编译过程以及gcc的简单使用
编译的基本流程:预处理阶段:主要对源文件进行文件包含和预处理语句的分析处理生成.i文件;编译阶段:把预处理完的.i文件进行一系列词法分析、语法分析、语义分析以及优化后生成相应的汇编文件.s;汇编阶段:使用汇编器将汇编代码转换成机器可以执行的指令并生成.o文件;链接阶段:使用链接器把所有的目标文件和库文件链接起来放在合适的位置生成.out可执行文件。gcc简单体验:sudo apt install gcc #安装gcc创建test.c,内容如下:#include <.原创 2022-01-10 12:02:24 · 307 阅读 · 0 评论