编译arm平台的qtembedded的mysql插件和移植mysql.doc
编译ARM平台的QTEMBEDDED的MYSQL插件和移植MYSQL到ARM开发板经过几天的努力,终于交叉编译出了ARM平台所需QT/E的MYSQL插件(驱动),其中顺便把MYSQL也移植到了MINI2410的开发板上。编译器ARMLINUXGCC432PC平台REDHAT由于MYSQL本身并不支持交叉编译,所以编译过程相对复杂,且各版本有所不同,本文针对MYSQL5132。1、准备工作首先在/HOME/BJWLXY目录下解压MYSQL5132TARGZ,得到MYSQL5132,进入目录运行如下命令/CONFIGUREPREFIX/USR/LOCAL/MYSQLMAKE然后将其改名为MYSQLPC备用。注意不要MAKEINSTALL2、CONFIGURE再次解压MYSQL5132TARGZ,得到MYSQL5132,进入目录,修改CONFIGURE文件VICONFIGURE注释以下代码21948IFTEST“CROSS_COMPILING“YESTHEN21949{{AS_ECHO“AS_MELINENOERRORIN\AC_PWD “}21951{{AS_ECHO“AS_MELINENOERRORCANNOTRUNTESTPROGRAMWHILECROSSCOMPILING21952SEE\CONFIGLOG OREDETAILS“}21955{EXIT1EXIT1}}}21956ELSE22025FI30317IFTEST“CROSS_COMPILING“YESTHEN30318{{AS_ECHO“AS_MELINENOERRORIN\AC_PWD “}30320{{AS_ECHO“AS_MELINENOERRORCANNOTRUNTESTPROGRAMWHILECROSSCOMPILING30321SEE\CONFIGLOG OREDETAILS“}30324{EXIT1EXIT1}}}30325ELSE30408FI保存退出。/CONFIGUREHOSTARMLINUXPREFIX/USR/LOCAL/MYSQL如果出现错误ERRORNOCURSES/TERMCAPLIBRARYFOUND再次配置/CONFIGUREHOSTARMLINUXWITHNAMEDCURSESLIBS/USR/LIB/LIBNCURSESSO5PREFIX/USR/LOCAL/MYSQL3、MAKEMAKE出现错误1/USR/LIB/LIBNCURSESSO5COULDNOTREADSYMBOLSINVALIDOPERATIONEADSYMBOLSINVALIDOPERATION这个是因为LIBNCURSESSO5运行平台不是ARM所致,这时,需要我们手动交叉编译LIBNCURSESSO5文件,方法和下面的类似1、下载NCURSES56TARGZ安装包,CDHOME解压包TARZXVFNCURSES56TARGZCDNCURSES56配置/CONFIGUREHOSTARMLINUXPREFIX/USRWITHSHAREDWITHOUTDEBUGMAKE2、备份/USR/LIB/里面的LIBNCURSESSO5,LIBNCURSESSO56CP/USR/LIB/LIBNCURSESSO5/USR/LIB/LIBNCURSESSO5BAKCP/USR/LIB/LIBNCURSESSO56/USR/LIB/LIBNCURSESSO56BAK复制NCURSES56/LIB目录下交叉编译过的LIBNCURSESSO5,LIBNCURSESSO56到/USR/LIB/CPLIB/LIBNCURSESSO5/USR/LIB/CPLIB/LIBNCURSESSO56/USR/LIB/接着CD/HOME/BJWLXY/MYSQL5132继续MAKE}出现错误2MAKE2LEAVINGDIRECTORY/HOME/ZHAOWG/MYSQLPC/SQL /GEN_LEX_HASHLEX_HASHHT/BIN/SH/GEN_LEX_HASHCANNOTCUTEBINARYFILEMAKE1LEX_HASHH错误126这是由于编译的ARM类型的程序不能在PC上运行造成的,于是前面做的准备工作派上用场了CP/MYSQLPC/SQL/GEN_LEX_HASHSQL/MAKE错误3SQL_PARSECC543221OPERATOR HASNOLEFTOPERANDMAKE3SQL_PARSEO错误1检查SQL_PARSECC的5432行,发现宏变量STACK_DIRECTION没有定义初值,网上查找资料发现ARM中定义STACK_DIRECTION为1,于是在文件开5432的上一行加上VISQL/SQL_PARSECCDEFINESTACK_DIRECTION1保存退出。MAKE完成4、MAKEINSTALLMAKEINSTALL会停在MAKEINSTALL_TO_DIR“/USR/LOCAL/MYSQL/MYSQLTEST“INSTALL_TEST_FILESMAKE4ENTERINGDIRECTORY/HOME/ZHAOWG/MYSQLPC/MYSQLTEST 一段时间,不要以为出错了,耐心等一会到此,编译ARM平台的MYSQL基本完成。编译ARM平台的QTEMBEDDED的MYSQL插件进入QT/E目录CDQTDIR/SRC/PLUGINS/SQLDRIVERS/MYSQLQMAKE“INCLUDEPATH/USR/LOCAL/MYSQL/INCLUDE/MYSQL““LIBSL/USR/LOCAL/MYSQL/LIB/MYSQLLMYSQLCLIENT_R“MYSQLPROMAKEMAKEINSTALLCDQTDIR/PLUGINS/SQLDRIVERS/LS如果出现LIBQSQLITESO,说明编译成功。移植MYSQL到开发板将/USR/LOCAL目录下的MYSQL文件夹拷贝到开发板的/USR/LOCAL目录下,并在环境变量里面声明。EXPORTPATH”PATH/USR/LOCAL/MYSQL/BIN”6、开启MYSQLD服务首先将以下内容保存为/ETC/MYCONFMYSQLDDATADIR/VAR/LIB/MYSQLSOCKET/TMP/MYSQLSOCKUSERROOTDEFAULTTOUSINGOLDPASSWORDATFORCOMPATIBILITYWITHMYSQL3XCLIENTSTHOSEUSINGTHEMYSQLCLIENT10COMPATIBILITYPACKAGEOLD_PASSWORDS1MYSQLD_SAFELOGERROR/VAR/LOG/MYSQLDLOGPIDFILE/VAR/RUN/MYSQLD/MYSQLDPID因为在/VAR/RUN目录下没有MYSQLD/MYSQLDPID,手工建立MKDIR/VAR/RUN/MYSQLDTOUCH/VAR/RUN/MYSQLD/MYSQLDPID开启服务MYSQL_INSTALL_DB–UROOTMYSQLD_SAFE–SOCKET/TMP/MYSQLSOCK至此,MYSQL运行在ARM开发板上了这里特别感谢作者ZHAO