linux静态库与共享库
来源:互联网 发布:cloud9 ide java 编辑:程序博客网 时间:2024/04/28 07:55
linux静态库与共享库
A.静态库的创建与使用:
1.通过gcc -c xxdk.c 生成目标文件=> xxdk.o
2.通过ar crs -o libxxdk.a xxdk.o 生成静态库 => libxxdk.a
3.通过gcc main.c -o main -L. -lxxdk 链接静态库编译,生成可执行文件main
4.执行main即可
B.动态库的创建和使用:
1.通过gcc -c xxdk.c 生成目标文件 => xxdk.o
2.通过gcc -fPIC -shared -o libxxdk.so xxdk.o 生成动态库文件 => libxxdk.so
3.通过gcc main.c -o main -L. -lxxdk 生成可执行文件 => main
4,此时,运行找不到库文件,我们需要(任意选一)
(1)将libxxdk.so放到/usr/lib或/lib目录下
(2)通过export LD_LIBRARY_PATH=/home/Linux/xxdk/ 将库所在的绝对路径添加至环境变量中(通过echo $LD_LIBRARY_PATH查看此环境变量的值;通过unset LD_LIBRARY_PATH来删除此环境变量里的值)
(3)在/etc/ld.so.conf.d/下新建一个sudo vi my.conf文件,在里面写入库所在的绝对路径,保存并执行sudo ldconfig执行配置文件。
区别:
1、静态库在编译的时候被加载,动态库在执行的之后被加载
2、加载静态库编译所生成的可执行文件比使用动态库的方式要大
3、静态库以.a为后缀,动态库以.so为后缀
实例:
库的源文件
- /*************************************************************************
- > File Name: calc.c
- > Author: XXDK
- > Email: v.manstein@qq.com
- > Created Time: Tue 14 Mar 2017 12:46:27 AM PDT
- ************************************************************************/
- int addx(int a, int b)
- {
- return (a + b);
- }
- int subx(int a, int b)
- {
- return (a - b);
- }
- int mulx(int a, int b)
- {
- return (a * b);
- }
- int divx(int a, int b)
- {
- return (a / b);
- }
/*************************************************************************
> File Name: main.c
> Author: XXDK
> Email: v.manstein@qq.com
> Created Time: Tue 14 Mar 2017 12:49:26 AM PDT
************************************************************************/
#include<stdio.h>
int main()
{
int a = 88;
int b = 22;
printf("a + b = %d\n", addx(a, b));
printf("a - b = %d\n", subx(a, b));
printf("a * b = %d\n", mulx(a, b));
printf("a / b = %d\n", divx(a, b));
return 0;
}
测试方法:
A:静态库方式
1. gcc -c calc.c
2. ar -crs -o libcalc.a calc.o
3. gcc main.c -o main -L. -lcalc
4. ./main
A:动态库方式
1. gcc -c calc.c
2. gcc -fPIC -shared -o libcalc.so calc.o
3. gcc main.c -o main -L. -lcalc
4. .export LD_LIBRARY_PATH=/home/xxdk/test/
5. ./main
- Linux 静态库与共享库
- Linux 静态库与共享库
- Linux 静态库与共享库
- Linux 静态库与共享库
- linux 静态库与共享库
- linux静态库与共享库
- linux静态库与共享库
- LINUX 静态库,共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux 静态库、共享库
- linux静态共享库实验
- 静态库与共享库
- 静态库与共享库
- Kalman滤波算法解释与实现
- WDM与NDIS中的同步机制
- jQuery EasyUI详解-EasyUI下拉框combobox
- 如何获取手机的ip地址
- 使用ionic2接入百度地图
- linux静态库与共享库
- mybatis-generator
- 用java实现对数据库的增删改查
- 剑指Offer_3_二维数组中的查找
- 3月1日 日常填坑(二)
- Poj 3273 Monthly Expense(二分)
- 剑指Offer_4_替换空格
- 初谈Java集合
- XML序列化与反序列化