• 保存到桌面  加入收藏  设为首页
安卓驱动

Linux C 静态库与动态库

时间:2016-11-27 19:55:35   作者:胜行天下   来源:胜行天下   阅读:419   评论:1
首先创建文件。
main.c

extern void print1(void);
extern void print2(void);

int main(void)
{
 print1();
 print2();

 return 0;
}

print1.c

#include
void print1(void)
{

  printf("this is the first print\n");
}

print2.c

#include
void print2(void)
{

  printf("this is the second print\n");
}

static library

1.分别对除mian.c文件之外的 .c 文件 执行
gcc -c print1.c  
gcc -c print2.c 

2.生成静态库
ar crs libpri.a print1.o print2.o  (pri 应该是自定义的名称

3.生成main.o
gcc -c main.c 

4.生成可执行文件a.out
gcc main.o -L. -lpri  (注意格式 -L后有个 .  表示当目录下,-l 后接不加扩展名的库名)

5.查看静态库中的文件
ar -t libpri.a

6.执行程序
./a.out


------------------------------------------------------------------------------------

 
dynamic library

1.分别对除mian.c文件之外的 .c 文件 执行
gcc -c print1.c  -fPIC
gcc -c print2.c  -fPIC 

2.生成动态库
gcc -shared -o libpri.so print1.o print2.o

3.配置dynamic library的绝对path
(对于elf格式的可执行文件,是由ld-linux.so*来完成的,它先后搜索elf文件的 DT_RPATH 段—环境变量LD_LIBRARY_PATH—/etc/ld.so.cache文件列表—/lib/,/usr/lib目录下找到库文件后讲其载入内存。)
本次采用修改环境变量的方法

首先获取当前文件路径
pwd
查看当前环境变量
echo $LD_LIBRARY_PATH
复制当前路径添加到环境变量中
export LD_LIBRARY_PATH=/home/fs/jsxuexi/0410/IO/ar
查看现在的环境变量
echo $LD_LIBRARY_PATH

4.生成可执行文件a.out
gcc -c main.c -L. -lpri 
(注意格式 -L后有个 .  表示当目录下,-l 后接不加扩展名的库名)

5.执行程序
./a.out

有任何疑问或技术合作都可联系我

微信:767000122 【推荐】

QQ:596957738


标签:LinuxC  静态库  动态库  
上一篇:没有了
下一篇:Linux vim常用命令
相关评论
精彩推荐

加我微信 596957738 (QQ同号)加我微信   QQ联系:596957738   地址:江苏省南京市雨花台区

苏公网安备32011402010305号

皖ICP备16019989号

江节胜的Gitee,江节胜的Git地址