大龙的博客

常用链接

统计

最新评论

Linux下生成.so(动态连接库).a(静态连接库的)例子 --- 转

本例子共有3个文件
func.h
const char *myfunc();
func.c
const char *myfunc()
{
return "so file test";
}
main.c
#include
#include
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 main
export LD_LIBRARY_PATH=$PWD     //当执行函数动态链接.so时,如果此文件不在缺省目录下'/usr/local/lib'and'/usr/lib' 需要指定环境变量./main
结果就是
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

posted on 2009-05-26 10:54 大龙 阅读(2626) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理