Chinaunix

标题: 使用自己编写的静态链接库问题 [打印本页]

作者: Tanacore    时间: 2009-08-08 18:05
标题: 使用自己编写的静态链接库问题
glibc中有一个库crypt,我现在想在我的程序中使用自己的crypt库,但,库的名字需要与glibc中的同名,即也为crypt,只是它是静态库。具体调用状况如下:

libcrypt.a(我自己的), libcrypt.so(glibc自带的,不想用它)

crypt_user.c  --> 需要调用libcrypt.a中我自己的crypt()函数

myutil.c   ---> 需要调用 crypt_user.c中的函数, myutil.c 需要被编译成动态库,即 libmyutil.so

可执行文件server ---> 需要调用 myutil.c 中的函数,即需要链接 libmyutil.so 库

请问,我应该在什么时候链接自己的libcrypt.a库?
创建 crypt_user.o 时?               
创建 libmyutil.so   时?               
创建 server          时?

各位帮帮忙,先谢过了~~
作者: prolj    时间: 2009-08-08 18:27
libcrypt.a和libcrypt.so是不一样的,一个是静态库,一个是动态的。
创建 crypt_user.o时静态链接你的libcrypt.a。什么加密算法啊?
作者: Tanacore    时间: 2009-08-08 18:36
原帖由 prolj 于 2009-8-8 18:27 发表
libcrypt.a和libcrypt.so是不一样的,一个是静态库,一个是动态的。
创建 crypt_user.o时静态链接你的libcrypt.a。什么加密算法啊?



动态库和静态库我知道不一样,只是目前需求是这样的,libcrypt.a是静态的,而且必须调用其中的crypt函数,而不使用glibc中的crypt.

其实我想了解一下链接静态库和动态库,有什么不同,我这种情况下Makefile应该怎么写

谢谢~
作者: ubuntuer    时间: 2009-08-08 20:16
如果你需要调用静态的
加个 -static -lcrypt就可以了
作者: 皇家救星    时间: 2009-08-08 21:01
编译libmyutil.so时链接上你的静态链接库就行了
作者: prolj    时间: 2009-08-08 21:13
makefile里面给gcc加个参数就行,去查gcc的参数看看哪个是链接静态库的。
作者: reiase    时间: 2009-08-08 21:33
不用参数,直接链接即可
比如
gcc a.o b.o aaaa.a




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2