`
qvb3d
  • 浏览: 171242 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何在Mac OSX 中制作dylib和使用dylib

 
阅读更多

如何在Mac OSX 中制作dylib和使用dylib

本文本着简单易读的方式给朋友们,本人为原创

1.首先是构建一个函数库

  编辑add.c

  int add(int a,int b)

  {

 return a+b;

  }

  int axb(int a,int b)

  {

 return a*b;

  }

  保存

  其中两个函数  add  axb

  这是简单的写的,复杂的自己开发,这里主要介绍方法

2.编译函数库

  gcc -c add.c -o add.o

  //下面是linux系统时

  ar rcs libadd.a add.o  

  //如果你是linux 就用这种库

  //下面是Mac OSX 

  gcc add.o -dynamiclib -current_version 1.0  -o libadd.dylib

  得到 libadd.dylib

3.编辑testadd.c

  #include <stdio.h>

  #include <stdlib.h>

  #include <dlfcn.h>

  int main(int argc,char *argv[])

  {

int a,b;

a=10;

b=9;

        int c;

c=add(a,b);

printf("%d\n",c);

return 1;

  }

  保存

4.编译testadd.c

  gcc testadd.c -o testadd -L. -ladd

  ./testadd

 

  输出19

 

5.编辑dladd.c

  #include <stdio.h>

  #include <stdlib.h>

  #include <dlfcn.h>

  int main(int argc,char *argv[])

  {

int *ab;

void *h=dlopen("./libadd.dylib",RTLD_LAZY);

ab=dlsym(h,"add");

printf("add=address is 0x %x\n",ab);

dlclose(h);

return 1;

  }

  这个是为了查看函数库在库中的地址的

6.编译dladd.c

   gcc dladd.c -o dladd -ldl

   ./dladd

 

   add=address is 0x 23fe2

   这是输出的地址了

 

 

分享到:
评论
5 楼 qvb3d 2013-07-03  
object 文件了

gcc -c add.c

之后的文件
4 楼 hhb19900618 2013-06-25  
你好 没明白   gcc add.o 是啥意思 为啥后面.o?
3 楼 qvb3d 2012-04-25  
sudo install_name_tool -id /usr/openwin/lib/libxview.dylib
2 楼 qvb3d 2012-04-01  
export  DYLD_LIBRARY_PATH=/usr/openwin/lib

再运行就可以了

以后常来我博客
我在深圳,也可以联系我,大家相互学习

msn:  qvb3d@live.cn
1 楼 happyjan 2012-02-17  
找到高手了。
麻烦您,我这有个MAC OS unix可执行文件,需要安装libxview.a文件在usr/openwin。不理解如何安装,本人就直接创建openwin目录,并将libxview.a文件复制到此目录下。结果在x11中运行可执行文件时,提示出错信息,dyld:Library not loaded:/usr/openwin/lib/libxview.dylib.按照您提示的方法创建*.a文件的*.dylib,失败。望指教!

相关推荐

Global site tag (gtag.js) - Google Analytics