- 主题:The MYSQL library not found :-(
在 win2k 里面的虚拟机下装 freebsd 5.4 成功,然后编译 smthbbs-1.2.2
命令是:
set CC="gcc" CFLAGS="-g" LDFLAGS="-lrt"
./configure --prefix=/home/bbs --enable-site=devel --disable-ssh
--disable-www --with-mysql=/usr/local/mysql
但是 configure 到一半就出错了:
creating libtool
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking for bison... no
checking for byacc... byacc
checking for gzgets in -lz... yes
checking for mysql_real_connect in -lmysqlclient... no
configure: error: The MYSQL library not found
这个问题怎么解决啊。:(
mysql 4.1.1 已经装在 /usr/local/mysql 里面了,而且可以登录建表 @@
而且 /usr/local/mysql/lib/libmysqlclient.a 是存在的 @@
--
修改:fancitron FROM 59.66.199.*
FROM 59.66.199.*
唉。。。ft啊,我是直接从 mysql 网站上下载的 for freebsd 5.3 的 binary 解压缩的
【 在 liangls (精灵射手) 的大作中提到: 】
: 我也出现过类似你这样的问题.
: 后来我是把mysql-client.server,devel,shared 都安装上了,然后就好了.至于为什么我也不太清楚.
: 要是你的路径写全了,你试试把东西都装全了,看行不行?
: ...................
--
FROM 59.66.199.*
或许跟 linux 还是 freebsd 有关?
我也怀疑 ./configure 这个脚本本身可能有问题。
以前在纯正的 redhat linux 上用 intel c compiler (ICC) 企图编译 smthbbs-1.2.2
的时候,就是在 configure 里面猜错了 setvbuf 的 prototype,于是编译通不过,
后来我只好把 configure 里面的这一行给注释掉了。。。
【 在 liangls (精灵射手) 的大作中提到: 】
: 不过我用的和你不是一个版本的,
: 我的是这个版本的:
: MySQL-client-4.1.12-1.i386.rpm
: ...................
--
FROM 59.66.199.*
唉,还是不行,看样子 mysql 装得有问题。按照 configure 里面的测试程序写了一段:
testmysql.c:
#include "mysql.h"
#define NULL ((void*)0)
int main ()
{
mysql_real_connect(
NULL,
"127.0.0.1",
"root",
"",
"bbs",
3306,
NULL,
0);
return 0;
}
然后编译:
# gcc -lmysqlclient -L/usr/local/mysql/lib -I/usr/local/mysql/include -o
testmysql testmysql.c
然后出错:
/var/tmp//ccltqyjb.o(.text+0x3c): In function `main':
: undefined reference to `mysql_real_connect'
怎么回事啊。。。~~~~~~~~~~~>.<~~~~~~~~~~
【 在 fancitron (Albatross) 的大作中提到: 】
: 或许跟 linux 还是 freebsd 有关?
: 我也怀疑 ./configure 这个脚本本身可能有问题。
: 以前在纯正的 redhat linux 上用 intel c compiler (ICC) 企图编译 smthbbs-1.2.2
: ...................
--
修改:fancitron FROM 59.66.199.*
FROM 59.66.199.*
这个选项可能没有问题,不过后来我手工编译了一下,有另外的奇怪问题,结果最后发现
必须把 -lmysqlclient 放在源文件 testmysql.c 的后面才能连接 @@
【 在 nbysy (孩子他爸) 的大作中提到: 】
: 看你后一个帖子
: --with-mysql=/usr/local/mysql/include/
: 才对吧?
: ...................
--
FROM 59.66.199.*
哎,你知不知道把 -lmysqlclient 放在源文件后面和放在源文件前面有什么区别呀?@@
【 在 nbysy (孩子他爸) 的大作中提到: 】
: 标 题: Re: The MYSQL library not found :-(
: 发信站: 水木社区 (Sun Jul 24 21:44:58 2005), 转信
:
: 没想法了.
:
: 【 在 fancitron (Albatross) 的大作中提到: 】
: : 这个选项可能没有问题,不过后来我手工编译了一下,有另外的奇怪问题,结果最后发现
: : 必须把 -lmysqlclient 放在源文件 testmysql.c 的后面才能连接 @@
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 60.178.69.*]
--
FROM 59.66.199.*
哎呀,足足折腾了一天,终于搞定了这个问题。。。
在 smthbbs 的 configure 里面的 17829 行(这个是我的configure里的行号):
原本是:
LIBS="-lmysqlclient -L$MYSQL_DIR/lib $LIBS"
要改成:
LIBS="-lmysqlclient -lz -lm -L$MYSQL_DIR/lib $LIBS"
这可能是因为我的虚拟机里的freebsd环境装的不是很好,以至于没有默认连接 -lm @@
不过更好的检测mysql的方法可能是采用 mysql 目录里面 mysql_config 脚本产生的
输出作为连接的命令行。我那个freebsd里面的执行结果是:
# /usr/local/mysql/bin/mysql_config --libs
-L/usr/local/mysql/lib -lmysqlclient -lz -lcrypt -lm
而在另一个 rh linux 环境里执行该脚本的输出则是:
-L/usr/local/mysql/lib -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
不管怎么说,总算把这个恼人的问题解决了 -,-
【 在 fancitron (Albatross) 的大作中提到: 】
: @@ 刚才又研究了一下gcc的man,发觉有这样一段话:
: -llibrary
: Search the library named library when linking.
: ...................
--
修改:fancitron FROM 59.66.199.*
FROM 59.66.199.*
应该有它的道理吧,但是被他害苦啦,~~~~~>.<~~~~~
不过这是否就意味着如果两个库互相引用对方的symbol的话,就需要 -l 两次?@@
真是复杂。。。-,-
【 在 nbysy (孩子他爸) 的大作中提到: 】
: 标 题: Re: The MYSQL library not found :-(
: 发信站: 水木社区 (Sun Jul 24 22:50:50 2005), 转信
:
: I see
: 牛人呐
:
: gcc 先把 *.c 编译成 *.o
:
: 再将 *.o 交给 linker 链接.
:
: 不过 gcc 指定lib 时的这一 feature 也太没人道了.
:
: 【 在 fancitron (Albatross) 的大作中提到: 】
: : @@ 刚才又研究了一下gcc的man,发觉有这样一段话:
: : -llibrary
: : Search the library named library when linking.
: : ...................
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 60.178.69.*]
--
FROM 59.66.199.*
ylrc 啊... 唉唉,昨天刚装了虚拟机和freebsd,不会ports >_<
而且以前在 rh linux 下面一直是直接解压缩 mysql binary 的,都用得好好的,
所以就没想到还会出问题..... >_<
【 在 flyriver (江~~忙碌生活) 的大作中提到: 】
: 其实问题在于是你手动安装的 mysql,如果你用 ports 方式安装 mysql,
: 就一点问题都没有...
--
FROM 59.66.199.*
对对,看来是这样的,嗯。
【 在 nbysy (孩子他爸) 的大作中提到: 】
: 库没关系吧,主要是 .o 文件一定要放 lib 前面.
--
FROM 59.66.199.*