如何在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
? ?这是输出的地址了
?
?
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,失败。望指教! 2 楼 qvb3d 2012-04-01 export DYLD_LIBRARY_PATH=/usr/openwin/lib
再运行就可以了
以后常来我博客
我在深圳,也可以联系我,大家相互学习
msn: qvb3d@live.cn 3 楼 qvb3d 2012-04-25 sudo install_name_tool -id /usr/openwin/lib/libxview.dylib