编写configure.ac/in文件加入mysql 的include和libs的路径自动检测或由用户指定.
来源:互联网 发布:百度搜索数据 编辑:程序博客网 时间:2024/06/02 04:13
mysql不同linux下的安装路径不大相同,直接中包括,不同的版本下编译比较麻烦,装mysql也N种方法,还有x86和x64版本同时装的,搞得很混乱,参考了一下别人的检测做法,目前发现两种:
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的做法.
- 编写configure.ac/in文件加入mysql 的include和libs的路径自动检测或由用户指定.
- configure.ac文件编写规则
- 开启指定路径的文件或网页
- AutoMake系列之一,configure.in文件的编写
- automake连载---关于两个文件configure.in和Makefile.am的编写
- automake连载---关于两个文件configure.in和Makefile.am的编写
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
- 用DirectoryExists和FileExists判断指定路径下是否存在指定的文件夹或文件
- configure.ac (configure.in)
- configure.ac (configure.in)
- 包含文件#include file相对文件路径和#include virtual相对根目录路径的区别
- 打开系统自带的图片或文件管理器,指定路径打开指定图片或文件
- 获取指定路径下目录或文件的大小
- #include和#include" "搜索路径的区别。
- 让用户加入到指定的组
- 在Java中实现DOM文档和XML文件互相转换(转贴)
- GDB 使用笔记
- 祝好!
- LINUX 下的内存检测工具, 性能测试工具
- 使用动态编程方法,在降低时间复杂度的情况下获得背包问题的最优解
- 编写configure.ac/in文件加入mysql 的include和libs的路径自动检测或由用户指定.
- XP下安装MS SQL2000服务器版
- 双线双IP机房助力电信、联通两大网络互联互通
- 浅析P2P业务上网行为管理主要难点
- CDN与ADN网络加速技术前景分析
- print和echo的区别
- P2P研究:主要应用模式及其现存问题
- 发的很好就就飞突然他
- 网康科技:P4P不是P2P技术得简单升级