前提:本文是基于Linux系统下的编程与学习 补充:头文件卫士,避免头文件重复包含。 命令:nm nm 二进制文件名; 可以查看二进制文件的符号表 那么符号表里都有哪些内容呢? 全局变量的名字, 静态局部变量的名字, 函数的名字 静态库和动态库 生成静态库: a. 将要加入静态库的源文件编译成目标文 ...
分类:
其他好文 时间:
2018-07-22 14:10:36
阅读次数:
119
一、 静态库与动态库 库(library),一般是一种可执行的二进制格式,被操作系统载入内存执行。 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库 静态库和动态库区别: 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。因此,使用了静态库的可执行程序 ...
分类:
编程语言 时间:
2018-07-05 13:30:31
阅读次数:
189
gcc/g++链接时对库的顺序要求 对于library的查找 查找需要连接的符号名是从前向后找,根据-L指定的路径顺序查找;不同 目录下的同名的库,只取第一个(从左向右),后面同名库被忽略; 对于符号的查找 从左向右查找,如果是主程序块和静态库,不能定位地址就报错: ‘undefined refer ...
分类:
系统相关 时间:
2018-07-02 21:37:13
阅读次数:
307
/usr/bin/ld:/usr/local/ssl/lib/libcrypto.a(x86_64cpuid.o):relocationR_X86_64_PC32against`OPENSSL_cpuid_setup‘cannotbeusedwhenmakingasharedobject;recompilewith-fPIC##g++编译动态库时,使用了ssl的静态库/usr/local/
分类:
系统相关 时间:
2018-06-25 13:10:29
阅读次数:
1231
静态库和动态库的区别 什么是库 库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、. ...
使用cmake构建嵌入式程序工程时遇到的问题,在此记录以下。 工程框架想把芯片相关的功能抽象出一个hal层,向上屏蔽芯片的API。 每个芯片相关文件会输出一个hal库。 APP相关代码编译后与hal库链接,生成最终的elf可执行文件。 不同于一般在.S汇编文件中编写中断向量表及中断处理函数, 我采用 ...
分类:
其他好文 时间:
2018-06-22 13:36:52
阅读次数:
1096
目标文件的链接次序 规范的连接次序为调用者在前,定义者在后。 GNU make基于时间戳编译源文件。 是否考虑次序取决于文件类型。 链接外部库 静态库。扩展名为“.a”,是通过GNU ar工具利用目标文件创建出来的。连接器会解析函数等的引用。 标准系统库通常存放路径为/usr/lib或/lib gc ...
分类:
其他好文 时间:
2018-06-18 21:42:51
阅读次数:
155
一、什么是库 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的函数库,如/lib /usr/li ...
分类:
系统相关 时间:
2018-06-18 11:03:21
阅读次数:
206
yum yellowdog updater,modified是一种用python写的基于rpm的管理工具 用于解决rpm包的依赖性 要安装编译工具 yum install gcc 库函数:静态库函数、动态库函数 sudo wget 下载的地址 进行下载文件 tar -xf 文件名 解压文件 ./co ...
分类:
系统相关 时间:
2018-06-17 15:11:44
阅读次数:
185
在众多开源的大神的博客里经整理如下:(已测试ok) 一、描述一下 Build ActiveArchitecture Only设置成YES; Architectures按Xcode默认配置,arm64向前兼容; 制作.a静态库,需要要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以尽量做到最大 ...
分类:
移动开发 时间:
2018-06-15 19:14:50
阅读次数:
157