Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > Linux下动态连接库的应用
【标  题】:Linux下动态连接库的应用
【关键字】:Linux
【来  源】:http://blog.csdn.net/Thumb168/archive/2006/07/25/975707.aspx

Linux下动态连接库的应用

Your Ad Here

最近又要写Linux下的程序了,时间长了,真有点忘记了.

整理了一点过去的东西,估计会用到.

内容当然如题了.

经历了多年windows下的编程,发现windows与Linux在很多方面还是有相似点的,呵呵,也不知道是谁学的谁的.

Linux下的动态连接库 当然不叫DLL的,叫Share Object.意思就不说了.

下面弄一个非常简单的例子.就用 加法运算吧

File    add.c

int Add(int x,int y)
{
 return x+y;
}

用CC搞下下.

gcc  -shared Add.c -o add.so

会生成一个 add.so 的文件.这个,就是share object 了.

与Windows一样,可以放到系统目录下去,也可以放到当前目录下.

好了,DLL写完了.噢,错了,是share object写完了.

下边写一个调用的程序.

不多说了,一切从简吧.

file addtest.c

#include <stdlib.h>
#include <dlfcn.h>

int (*Add)(int x,int y);

int main()
{
 void *dlhandle;
 int i;
 dlhandle = dlopen("./Add.so",RTLD_LAZY);
 
 if(dlhandle == NULL)
 {
  printf(" Load Dll Error:%s",dlerror());
  return 0;  
 }
 Add = dlsym(dlhandle,"Add");
 if(Add == NULL)
  {
   printf("load function Add Error\n");
   dlclose(dlhandle);
   return 0;
  }
 for(i = 0;i<100;i++)
  printf("%i+%i = %i\n",i,i,Add(i,i));
 return 0;
}

OK,这样就可以了,下面编译一下吧.这儿可要注意了.与平时有点不同.

cc addtest.c -ldl -s -rdynamic  后两个参数也可以不用,第一个是省不得的.因为他要让CC多弄些东西到程序中去.

好了,运行一下吧.


cc addtest.c -ldl -s -rdynamic

挂光驱:【上一篇】
Samba 学习手记(1):【下一篇】
【相关文章】
  • [转]Linux和Windows平台软件对比表
  • Linux下加载NTFS分区(Fedora 4)
  • linux终端输入时关闭回显
  • linux下的内存管理
  • 把linux配置成pix、switch、router 的日志主机
  • Linux基本操作命令详解(转)
  • linux-arm交叉编译工具链的构建过程
  • Linux Virtual Server on Gentoo for Email
  • DistroWatch.com 一个非常好的Linux发行版情报网站
  • Linux防入侵---snort的安装与配置
  • 【随机文章】
  • 一些ASP小源程序
  • 查看SUN V220CPU利用率
  • .net 2.0 下发送邮件的方式。
  • 自制一个公共对话框
  • Pro Hibernate 3笔记和小结(2)之第一章Hibernate入门
  • Subversion配置安装教程(二)
  • 计算机专业经典书籍
  • 逆向工程——Oracle到PowerDesigner
  • 安装Linux安装过程
  • EclipseWork Plugin的安装!
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.