当前位置: 技术问答>linux和unix
求教:编译时静态库的问题
来源: 互联网 发布时间:2015-07-22
本文导语: 我的程序用到libmysqlclient.a这个mysql的静态库,连接时报错如下: /usr/local/mysql/lib/libmysqlclient.a(my_compress.o): In function `my_compress_alloc': my_compress.o(.text+0xb4): undefined reference to `compress' /usr/local/mysql/lib/libmysqlclient.a(my_com...
我的程序用到libmysqlclient.a这个mysql的静态库,连接时报错如下:
/usr/local/mysql/lib/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
my_compress.o(.text+0xb4): undefined reference to `compress'
/usr/local/mysql/lib/libmysqlclient.a(my_compress.o): In function `my_uncompress':
my_compress.o(.text+0x12a): undefined reference to `uncompress'
collect2: ld returned 1 exit status
make: *** [Client] Error 1
应该是连接时还需要连接别的库。 怎么样才能知道libmysqlclient.a还需要连接哪个库呢?
谢谢
/usr/local/mysql/lib/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
my_compress.o(.text+0xb4): undefined reference to `compress'
/usr/local/mysql/lib/libmysqlclient.a(my_compress.o): In function `my_uncompress':
my_compress.o(.text+0x12a): undefined reference to `uncompress'
collect2: ld returned 1 exit status
make: *** [Client] Error 1
应该是连接时还需要连接别的库。 怎么样才能知道libmysqlclient.a还需要连接哪个库呢?
谢谢
|
nm可以看静态连接库中所有的符号,一个作用是看一看程序做了怎样的函数调用,另一种作用是看一看一个库或目标文件是否提供所需要的函数。你可以通过nm知道到底你还差那些东西没有定义,再去找相关的.a
|
这个很难么?写一个脚本将所有库的符号都导出来,保存到一个文件,以后需要什么就Grep一下不久OK了?
|
这个是mysql编译的经典问题了,是因为mysql需要用到libz的库文件。你看看mysql参考手册上,写得很清楚的。
编译参数最后加上 -lz 就行。
编译参数最后加上 -lz 就行。
|
是呀,我也是想了好久。。关注中。。。