`
java-mans
  • 浏览: 11460141 次
文章分类
社区版块
存档分类
最新评论

Linux下创建和使用静态和动态库

 
阅读更多
一.创建静态库与使用:
(创建静态库):
1.编写源代码。这个可以想像成是一种服务或一种函数,它可以为别的程序提供服务。
2.生成目标文件:gcc -c xxxx.c -o xxxx.o(注意,这里是用-c选项来编译)
3.使用ar命令创建静态库: ar rc libxxx.a xxxx.o
说明:libxxx.a是你想要创建静态库的名字,根据习惯在Linux下库名称是以lib开头的,以.a结尾的表示是静态库。xxxx.o则是以这个目标文件来生成静态库。

(使用静态库):
1.使用静态库需要获得两个文件:头文件:xxxx.h, 和静态库文件:libxxxx.a
2.在编译其他源文件(一些需要使用静态库中所提供的函数或服务的源文件)编译时使用:
gcc -o final xxx.c libxxxx.a

二。创建动态库(也称为共享库)与使用:
(创建动态库):
1.用 gcc 和 -fPIC 参数将源文件代码编译成.o的目标代码,这个选项生成的代码与位置无关,可以在任何地址被连接和装载。如:gcc -fPIC -Wall -g -c xxx.c -o xxx.o
2.使用-shared来创建共享库,使用以下命令及参数:
gcc -g -shared -W1,-soname,libxxx.so.1.0.0 -o libxxxx.so.1.0.0 xxxxx.o
说明:-soname,libxxx.so.1.0.0:说明soname为“libxxx.so”版本为1.0.0
注意:-W1:那个是数字1
3.创建soname连接。因为前面定义的soname为"libxxx.so",因此需要创建一个"libxxx.so"到"libxxx.so.1.0.0"的连接:
ln -sf libxxx.so.1.0.0 libxxx.so
(使用共享库):
1.需要三个文件:头文件xxx.h, 库文件:libxxx.so.1.0.0 及其链接libxxx.so
2.编译:gcc -Wall -g -c xxx.c -o xxx.o
3.连接引用动态库:gcc -g -o final xxx.o -L ./ -lxxx[这里的-lxxx是引用其共享库的名字,它是libxxx.so.1.0.0的缩写]
4.运行:注意,运行时需要指定库的搜索路径,它由一个环境变量:LD_LIBRARY_PATH指定!
LD_LIBRARY_PATH=$(pwd) ./final



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics