时间:2008-01-09 21:45
现象描述:昨天编译安装好了snort-2.0.5,今天又往snort-2.0.5中编写了一个新的预处理器,因此要重新编译安装。
在snort-2.0.5目录下执行:
#./configure --enable-debug --with-mysql=/usr/local/mysql
昨天:
mysql.h - /usr/local/mysql/include/mysql
libmysqlclient - /usr/local/mysql/lib/mysql
今天:
mysql.h - /usr/local/mysql/include/mysql (不变)
libmysqlclient - /usr/local/mysql/lib (少了一层目录mysql)
(两次运行的configure脚本为未作任何修改的同一个文件)
结果ld在进行连接时因找不到libmysqlclient.so.*而异常终止。
查看configure脚本中测试mysql库文件的代码段如下:
for i in lib lib/mysql; do
str="$MYSQL_DIR/$i/libmysqlclient.*"
for j in `echo $str`; do
if test -r $j; then
MYSQL_LIB_DIR="$MYSQL_DIR/$i"
break 2
fi
done
done
其中 $MYSQL_DIR 是 --with-mysql 选项指定的值+'/',这里为 /usr/local/mysql/
从以上代码片段可见,configure首先在/usr/local/mysql/lib目录中测试是否有任一文件名以libmysqlclient.开头的文件。
有则设置libmysqlclient路径并退出。若没有,继续往/usr/local/mysql/lib/mysql 中查找。
进入/usr/local/mysql/lib目录一看,除了mysql文件夹以外,还多了一个libmysqlclient的二进制文件(记不得什么时候拷进去的)。
将libmysqlclien删除后再运行configure脚本时得到了与昨天一样的结果。