求教:编译时静态库的问题

jianzy 2004-09-01 10:54:39
我的程序用到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还需要连接哪个库呢?

谢谢
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pacman2000 2004-09-01
  • 打赏
  • 举报
回复
这个是mysql编译的经典问题了,是因为mysql需要用到libz的库文件。你看看mysql参考手册上,写得很清楚的。
编译参数最后加上 -lz 就行。
CoolQ 2004-09-01
  • 打赏
  • 举报
回复
这个很难么?写一个脚本将所有库的符号都导出来,保存到一个文件,以后需要什么就Grep一下不久OK了?
jianzy 2004-09-01
  • 打赏
  • 举报
回复
我知道nm,难道我还得用nm一个一个地查哪个.a库提供了这个函数吗?
可不可以从哪里直接看出是哪个库提供该函数调用?
eveningglory 2004-09-01
  • 打赏
  • 举报
回复
nm命令你应该知道吧,linux自带的
eveningglory 2004-09-01
  • 打赏
  • 举报
回复
nm可以看静态连接库中所有的符号,一个作用是看一看程序做了怎样的函数调用,另一种作用是看一看一个库或目标文件是否提供所需要的函数。你可以通过nm知道到底你还差那些东西没有定义,再去找相关的.a
zhushizu 2004-09-01
  • 打赏
  • 举报
回复
是呀,我也是想了好久。。关注中。。。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧