我使用代码块来编译一个使用mysql的应用程序。在CentOS 6下,这个应用程序编译得很好(我假设使用了.so文件)。在CentOS 5下,这个相同的项目文件将不会编译,除非我转到ProjectAC.26 Build\库并添加:
/usr/lib/mysql/libmysqlclient.a
否则,我会得到链接错误,例如
*myfile.c|87|undefined引用“`mysql_use_`mysql”**
发布于 2012-01-30 03:20:28
你这里有两个问题。
首先,针对mysql链接的正确方法是将-lmysqlclient添加到链接行,而不是直接链接静态库。当您将-lx添加到链接行时,链接器将搜索LDPATH中名为libx.so (如果是动态链接)或libx.a (如果是静态链接)的文件。
您应该反复检查libmysqlclient.so是否在LDPATH 中,并且是兼容的体系结构(请记住64位对32位问题)。
您还需要在-lresolv 6下添加-lssl和CentOS的原因是,MySQL库不再自动提取它们--在以前的版本中,它总是会这样做,但在CentOS 6中,正确地没有这样做。通常,您可以使用pkg-config来查看链接特定库所需的内容(或者查看它的.la文件(如果安装了)。您也可以使用libtool进行链接,但我不建议这样做。
https://stackoverflow.com/questions/9057236
复制相似问题