发新话题
打印

请教gtk中如何链接我们自己做的库

请教gtk中如何链接我们自己做的库

请教众位高手:我们在使用gtk的过程中如何链接我们自己做的库,比如我们利用kde生成了一个用户自己的库,那我怎样才能在gtk中如何链接使用呢?  
多谢各位赐教!      

TOP

什么库,界面库?      
象一阵风 拂过我身边 忽然间 想要去很远 和你去看繁华世界

TOP

库 是 有时候我们会把底层一些代码进行封装的库

库 是有时候我们会把底层一些代码进行封装的库,比如 在工业机床控制中人们会把机床的算法,运行轨迹 ,运行特性等函数封装起来做成用户的自定义库,又比如在camera的应用中如果 我们写他的底层调用代码功能时,为了提高编程效率,也会封装成库,这样在编写不同的界面时,做不同工程时,只写上层然后去调用底层 的 库就可以了,而不需要从头再来。
现在我就是想知道
我们在使用gtk的过程中如何链接我们自己做的底层库,比如我们利用kde生成了一个用户自己的马达库,那我怎样才能在gtk中如何链接使用呢?
还请您进行指教,多谢!      

TOP

你的是静态库还是共享库?

[ 本帖最后由 fitren 于 2007-9-18 17:13 编辑 ]      
若不是因为风,雨不会美丽!

TOP

静态库还是共享库?
引用:
1静态库
test.c
#include <stdio.h>
int main()
{
        printft("test2!\n");
        return 0;
}
myld.c
#include <stdio.h>
void printft(char *str)
{
        printf("%s\n",str);
}

编译目标文件:myld.o
gcc -c -Wall -o myld.o myld.c
创建库文件
ar cr libmyld.a myld.o
添加索引
ranlib libmyld.a

编译:
gcc -L . -Wall -o test test.c -lmyld
其中-L选项告诉连接器在当前目录中查找库文件

2.共享库
gcc -Wall -L . -c -o test.o test.c
gcc -Wall -L . -D_REENTRANT -fPIC -c -o myld.o myld.c
gcc -shared -W1,soname,libmyld.so.1 -o libmyld.so.1.0.0 myld.o -lc
ln -sf libmyld.so.1.0.0  libmyld.so
ln -sf libmyld.so.1.0.0  libmyld.so.1
gcc -o -Wall -L . -o test test.o -lmyld


-D_REENTRANT:使预处理器符号──REENTRANT被定义,这个符号激活一些宏特性
-fPIC:产生位置无关的代码。
-shared:告诉编译器产生共享库代码。
-Wl:使得后面的选项被传递给连接器.
libmyld.so.1.0.0:通常包含了库代码,它通常拥有库的全部版本号。其它的两个文件(libmyld.so和libmyld.so。1)和它是符号连接关系,这样使得用户在系统中拥有相同soname的库的多个副本,可以调整两个符号连接来在它们之间进行切换。除此之外还表明了是通过 soname来决定调用哪个库的.
libmyld.so.1:它负责把库装载进程序的被共享装载器所使用的一个文件。
libmyld.so:该文件只用于编译程序,不以任何形式为共享库存装载器使用,

共享库不是在程序运行的时候装载的,所以:
1可以把libmyld.so*文件copy到/etc/ld.so.conf中列举的任何一个目录中,并以root身份执行ldconfig
或者
2export LD_LIBRARY_PATH=`pwd`,它把当前路径加到库存搜索路程径中去.
      
若不是因为风,雨不会美丽!

TOP

多谢,我这就去试试

多谢你fitren ,你好厉害呦,我这就去试试      

TOP

发新话题