天天看點

mysql在AIX平台的編譯(32位、64位)

        項目中,需要使用到mysql的動态連結庫,如libmysqlclient.so檔案,而手頭又沒有現成的庫(網絡搜集了也沒找到),索性自己來編譯。(網絡下載下傳的mysql-connector-c-6.0.1-aix5.3-powerpc-32bit.tar.gz和mysql-connector-c-6.0.1-aix5.3-powerpc-64bit.tar.gz檔案不可用,總是報告格式有問題,不知道是否和晶片相關)

        下面,言歸正傳,

        1】首先,拿到MySQL的源代碼,

        http://download.csdn.net/download/xjp342023125/3760184

       2】 上傳到AIX後,進行編譯

        1)解壓檔案gunzip mysql-5.1.59.tar.gz

        2)解封包件 tar xvf mysql-5.1.59.tar

        3)執行configure,産生編譯腳本如Makefile檔案等

        4)make執行,進行編譯

        如果make沒有問題,在直接找到libmysqlclient.so.16即可使用。

        3】可能遇到的問題,及處理辦法

          1)g++編譯器不存在等問題,如何編譯出libmysqlclient.so呢?請見下文

          但由于機器上沒有安裝g++編譯器,導緻出現

        source='my_new.cc' object='my_new.o' libtool=no  DEPDIR=.deps depmode=none /bin/sh ../depcomp  g++ -DDEFAULT_BASEDIR=\"/usr/local\"  -DMYSQL_DATADIR="\"/usr/local/var\""  -DDEFAULT_CHARSET_HOME="\"/usr/local\""  -DSHAREDIR="\"/usr/local/share/mysql\""  -DDEFAULT_HOME_ENV=MYSQL_HOME  -DDEFAULT_GROUP_SUFFIX_ENV=MYSQL_GROUP_SUFFIX  -DDEFAULT_SYSCONFDIR="\"/usr/local/etc\""  -DHAVE_CONFIG_H -I. -I../include -I../zlib -I../include  -I../include -I.     -O    -c -o my_new.o my_new.cc

../depcomp[571]: g++: 找不到。

make:1254-004 上一個指令的錯誤碼是 127。

(如上環境中,編譯的動态連結庫為32位的。如果要産生64位的動态庫,則首先需要設定export OBJECT_MODE=64,設定cc編譯環境為64位後進行編譯,或參照http://blog.csdn.net/pony12/article/details/43764803)

        則需要修改Makefile檔案,剔除不必要的編譯子產品mysys、dbug、extra、storage、plugin、unittest、man、tests、mysql-teset、server-tools後,make仍然出錯,但libmysqlclient.so.16編譯已經完成,變名為libmysqlclient.so即可使用了。

          2)編譯過程中,還會遇到如下錯誤,

libtool: compile:  cc -qlanglvl=ansi -DDEFAULT_CHARSET_HOME=\"/usr/local\" -DMYSQL_DATADIR=\"/usr/local/var\" -DDEFAULT_HOME_ENV=MYSQL_HOME -DDEFAULT_GROUP_SUFFIX_ENV=MYSQL_GROUP_SUFFIX -DDEFAULT_SYSCONFDIR=\"/usr/local/etc\" -DSHAREDIR=\"/usr/local/share/mysql\" -DMYSQL_CLIENT_NO_THREADS -DDONT_USE_RAID -I. -I../include -I../include -I../include -I../zlib -g -DUNIV_AIX -DUNIV_AIX -c -M my_net.c  -DPIC -o .libs/my_net.o "my_net.c", line 93.5: 1506-068 (S) 不允許在類型“struct hostent*”和“int”之間進行操作。 make:1254-004 上一個指令的錯誤碼是 1。

          則修改源代碼,return result即可;

        雖然編譯過程和結果不完美,但編譯産生的libmysqlclient.so檔案,經測試後可用。

         有問題,請及時聯系。QQ:1421067726,希望能給你提供幫助。

繼續閱讀