视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
编写configure.ac/in文件加入mysql的include和libs的路径自动检
2020-11-09 07:23:25 责编:小采
文档


mysql不同linux下的安装路径不大相同,直接中包括,不同的版本下编译比较麻烦,装mysql也N种方法,还有x86和x版本同时装的,搞得很混乱,参考了一下别人的检测做法,目前发现两种: 1. 装了mysql开发库之后(你Yum,build from source, emerge 等等),会顺便

mysql不同linux下的安装路径不大相同,直接中包括,不同的版本下编译比较麻烦,装mysql也N种方法,还有x86和x版本同时装的,搞得很混乱,参考了一下别人的检测做法,目前发现两种:

1. 装了mysql开发库之后(你Yum,build from source, emerge 等等),会顺便安装一个mysql_config的程序,它可以输出mysql的include和libs路径, 使用am工具可以在configure.ac写以下脚本,让用户自行给一个mysql_config的执行路径,或使用默认的来检测.
configure.in
AC_MSG_CHECKING(for MySQL support) 输出检查信息
AC_ARG_WITH(mysql,
AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
[WITH_MYSQL=$withval],[WITH_MYSQL=yes])

<---定义一个configure配置项,withval 是用户输入值, yes设置默认值

AC_PATH_PROG(MYSQL_CONFIG, mysql_config)

AC_SUBST(MYSQL_LIBS) 替换Makefile.am中的变量 $(MYSQL_LIBS)
AC_SUBST(MYSQL_INCLUDE) 替换Makefile.am中的变量 $(MYSQL_INCLUDE)
完整检测代码:
if test "$WITH_MYSQL" != "no"; then
AC_MSG_RESULT(yes)
if test "$WITH_MYSQL" = "yes" ; then
AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
else
MYSQL_CONFIG=$WITH_MYSQL
fi
dnl AC_PATH_PROG(MYSQL_CONFIG, mysql_config)

if test "$MYSQL_CONFIG" = ""; then
AC_MSG_ERROR(mysql_config is not found)
fi
if test /! -x $MYSQL_CONFIG; then
AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
fi

if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s//'//g`"
else
MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s//'//g`"
fi
MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s//'//g`"

AC_MSG_CHECKING(for MySQL includes at)
AC_MSG_RESULT($MYSQL_INCLUDE)

AC_MSG_CHECKING(for MySQL libraries at)
AC_MSG_RESULT($MYSQL_LIBS)
dnl check for errmsg.h, which isn't installed by some versions of 3.21
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
AC_CHECK_HEADERS(errmsg.h mysql.h)
CPPFLAGS="$old_CPPFLAGS"

AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
else
AC_MSG_RESULT(no)
fi

2. 使用mysql监听的unix-domain socket来获得这些信息, 参考PHP的做法.

下载本文
显示全文
专题