linux下.a与.os文件的生成与使用以及gcc生成静态库与动态库
文章目录
一、.a文件的生成与使用
1.建立文件目录
代码如下
mkdir text2
cd text2
2.编译输出函数
以两个输出函数为例
函数代码如下
3.生成和使用.a 文件
具体代码如下:
3.1 生成目标文件(*,o)
gcc -c A1.c A2.c
3.2 生成静态库.a文件
ar crv libafile .A1.o A2.o
3.3 执行文件
4 .so文件的生成和使用
4.1 生成目标文件
代码如下
gcc -c -fpic A1.c A2.c
4.2 生成共享库文件.so文件
4.3 执行文件
发现如下错误,原因是该目录下无对应的.so文件,我们需要把该文件拷贝至 usr/lib 目录下
代码如下
cp libsofile.so /usr/lib
调试成功!
二、静态库与动态库的进一步讨论
一个简单的例子
创建一个输出hello 加对象的函数,具体代码如下
2. 通过生成静态库的方式调试代码
将hello.c文件编译成.o文件
由.o文件创建静态数据库
在程序中使用静态库]
删除静态库文件,任然可以运行hello
3.在程序中使用动态库
出现的错误同 1.4 中类似,需要在 usr/lib目录下添加动态库文件
4.同时存在静态库文件和动态库文件
由以上代码可知,同时存在情况下,会选择动态库进行编译
总结
我们通过两个简单的例子来熟悉gcc编译静态库和动态库的具体过程,以及部分注意事项,在二者同时存在的情况下,优先级问题。