每每安装开源软件的时候,最头痛的就是编译安装的过程中出现了编译错误。有时看到大篇幅的编译错误时,就不知道该从哪下手修正错误了。这也许就是开源软件相对于商业软件难于普及的一个重要原因吧。
问题描述:cppdb在mac上的编译过程中出现了如下错误提示,
Building CXX object CMakeFiles/cppdb.dir/drivers/odbc_backend.cpp.o
/usr/local/src/cppdb-0.3.0/drivers/odbc_backend.cpp:46: error: size of array ‘assert_on_sqlwchar_is_16’ is negative
make[2]: *** [CMakeFiles/cppdb.dir/drivers/odbc_backend.cpp.o] Error 1
make[1]: *** [CMakeFiles/cppdb.dir/all] Error 2
make: *** [all] Error 2
问题解决:
显然,在编译安装odbc驱动时,出现了问题。因此,安装cppcms的经验,重新安装odbc库。
1. port search odbc.
2. 根据查询结果,选择合适的安装包名进行安装。sudo port install libiodbc.
安装完毕后,重新编译cppdb,可是问题依旧。我要开发的网站,后端数据库使用的是mysql,试想cppdb作为抽象数据库访问层编译安装odbc对我来说也没什么大用,那不如直接关掉该选项。于是,进入到cppdb的安装路径,用文本编辑器打开CMakeLists.txt,将odbc默认安装选项改为option(DISABLE_ODBC "Link odbc backend into the libcppdb" ON)。保存后,再重新编译安装cppdb库,编译安装通过。
问题2: 编译安装cppdb时,出现编译安装mysql驱动错误。我已经将mysql库的头文件库拷贝到/usr/include目录下,也将相关的libmysqlclient库拷贝到/usr/lib目录下,问题依旧。
问题解决:根据编译错误提示,猜想可能是因为我拷贝的库文件是32位的缘故,所以去mysql的官网,下载了64.tar.gz包,解压后,从/usr/include, 和/usr/lib目录,将原来拷贝好的32位mysql头文件和库文件删除掉,然后从64位库解压目录中,将对应的include文件目录中的所有头文件再次拷贝到/usr/include目录,再把lib目录中的所有mysql库拷贝到/usr/lib目录中。最后,重新编译cppdb库,安装终于通过了。