linux动态连接库生成

本例子共有3个文件
"func.h"
const char *myfunc();



 "func.c"
const char *myfunc()
{
return "so file test";
}



 "main.c"
#include <stdio.h>
#include "func.h"
int main()
{
     printf("%s/n", myfunc());
     return 0;
}
1.动态连接库的生成方法
执行下面的命令
引文:
gcc -fpic -c func.c
gcc -shared -o func.so func.o
gcc -I. main.c func.so -o run
export LD_LIBRARY_PATH=$PWD
./run

结果就是
so file test
2. 静态连接 库的生成方法
执行下面的命令
引文:
gcc -c func.c
ar q func.a func.o
gcc -I ./ main.c func.a
./a.out

参数说明
引文:
-fpic
如果支持这种目标机,编译器就生成位置无关目标码.适用于共享库(shared library)
-I(include path),-I. include路径在当前
-shared
生成一个共享目标文件,他可以和其他目标文件连接产生可执行文件.只有部分系统支持该选项
-c
编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件,缺省情况下, GCC通过用`.o'替换源文件名后缀
ar q[f] - 将文件快速追加到归档文件中
结果就是
so file test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值