linux动态连接库生成

来源:互联网 发布:ip网络广播的优势 编辑:程序博客网 时间:2024/05/17 23:36

本例子共有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

原创粉丝点击