Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171857
  • 博文数量: 40
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 10:17
文章分类
文章存档

2013年(10)

2012年(10)

2011年(11)

2010年(9)

分类: LINUX

2011-05-11 08:58:08

动态库的编译方法

编译库文件myfunction.c:


[table=98%,rgb(241, 241, 241)][tr][td]debian:/home/program# gcc -shared -o libmyfunction.so myfunction.c 

[/td][/tr][/table]
如果编译成功,会在/home/program/下生成动态库文件:libmyfunction.so。
这里有两点需要说明:
1.对Linux操作,一般都推荐在普通用户模式下,如果需要超级用户的权限,则可以通过su root,输入root用户密码切换。我是个人学习使用,同时又有很多的操作都要使用root用户,因此就直接在root用户下进行编译。

2.编译生成动态库的命令为:gcc (-fpic) -shared -o libmyfunction.so myfunction.c
    -fpic 使输出的对象模块是按照可重定位地址方式生成的。
    -shared指定把对应的源文件生成对应的动态链接库文件。
 
引用动态库时 为什么编译能通过,而运行不能通过;
 
  原因:编译是你的指定的路径去编译,而运行时是通过环境
变量去找,所以这时候就要指定路径,把你的路径加到环境变
量中就OK了
  例如 export LD_LIBRARY_PATH="/usr/local/mysql/lib/mysql/"
 
源文件见:

 
阅读(1481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~