一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks
          下文介紹的內容都是基于 Linux RedHat 9.0 平臺的。

          一、PC機編譯安裝
          請閱讀在安裝包里的 INSTALL 文件。或者使用PEAR installer with "pear install sqlite"。SQLite已經內置了,你不需要安裝任何附加的軟件(additional software)。
          Windows users可以下載SQLite擴展DLL(php_sqlite.dl)。
          這里簡單介紹一下:
          假設你得到的是源代碼sqlite-3.3.6.tar.gz,這里將告訴你怎么編譯它。
          解壓sqlite-3.3.6.tar.gz 到 /home目錄下
          For example:
          ??? tar zxvf sqlite-3.3.6.tar.gz -C /home???????????
          ??? cd /home
          ??? mkdir sqlite-ix86-linux
          ??? cd /home/sqlite-ix86-linux/
          ??? ../sqlite-3.3.6/configure --prefix=/home/sqlite-ix86-linux/
          編譯并安裝,然后生成幫助文檔???
          ??? make && make install??? ?&& make doc

          如果出現下列錯誤
          ../sqlite-3.3.6/src/tclsqlite.c: In function `DbUpdateHandler':
          ../sqlite-3.3.6/src/tclsqlite.c:333: warning: passing arg 3 of `Tcl_ListObjAppendElement' makes pointer from integer without a cast
          ../sqlite-3.3.6/src/tclsqlite.c: In function `tclSqlFunc':
          ../sqlite-3.3.6/src/tclsqlite.c:419: warning: passing arg 1 of `Tcl_NewByteArrayObj' discards qualifiers from pointer target type
          這個都時tcl相關的錯誤,可以先安裝ActiveTcl以解決.假如你不需要tcl支持,那么這個錯誤可以這樣避免:
          ??? cd /home/sqlite-ix86-linux/
          ??? ../sqlite-3.3.6/configure --disable-tcl? --prefix=/home/sqlite-ix86-linux/
          編譯并安裝,然后生成幫助文檔???
          ??? make && make install??? ?&& make doc
          不出意外,將不會出現錯誤,那么
          庫文件已經生成在 /home/sqlite-ix86-linux/lib 目錄下
          可執行文件sqlite3已經生成在 /home/sqlite-ix86-linux/bin 目錄下
          下面創建一個新的數據庫文件名叫"zieckey.db" (當然你可以使用不同的名字) 來測試數據庫.
          直接輸入:? /home/sqlite-ix86-linux/bin/sqlite3 test.db
          如果出現下面字樣表明編譯安裝已經成功了.
          SQLite version 3.3.6
          Enter ".help" for instructions
          sqlite>


          二、交叉編譯sqlite.3.3.6.tar.gz庫文件
          ??? tar zxvf sqlite-3.3.6.tar.gz -C /home???? (這一步前面已經有了,為了完整性,這里還是寫出來)
          ??? mkdir /home/sqlite-arm-linux

          設置交叉編譯環境
          ??? export PATH=/usr/local/arm-linux/bin:$PATH
          ???
          ??? cd /home/sqlite-arm-linux/
          ??? ../sqlite-3.3.6/configure? --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
          ??? 這步出現錯誤而沒有生成Makefile
          ??? configure: error: unable to find a compiler for building build tools
          ???
          ??? 前面檢查arm-linux-gcc都通過了,怎么還說沒有找到編譯器呢?花了點時間看configure的腳本,太復雜了,又結合 configure.ac看了一下。原來是要設置config_TARGET_CC和config_BUILD_CC兩個環境變量。 config_TARGET_CC是交叉編譯器,config_BUILD_CC是主機編譯器。重來:

          ??? export config_BUILD_CC=gcc
          ??? export config_TARGET_CC=arm-linux-gcc
          ??? ../sqlite-3.3.6/configure? --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
          又出現如下錯誤
          ??? checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling
          說readline.h的錯,找到readline.h在/usr/include/readline/readline.h目錄,我想這樣解決
          ??? ln -s /usr/include/readline/readline.h /usr/include/readline.h
          但還是不行
          ??? ../sqlite-3.3.6/configure? --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
          還是出現如下同樣的錯誤
          ??? checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling
          ???
          上面說是要檢查交叉編譯環境,我可以肯定我的交叉編譯環境是正確的,
          所以我決定欺騙configure,我時這樣做的
          ??? cd /home/sqlite-3.3.6
          將該目錄下的 configure 文件的部分內容修改下(這里是根據?? test "$cross_compiling" = yes &&? 找到的 ),
          這樣可以讓configure不去檢查你的交叉編譯環境。
          ? 20420行 { (exit 1); exit 1; }; }改為 { (echo 1); echo 1; }; }
          ? 20446行 { (exit 1); exit 1; }; }改為 { (echo 1); echo 1; }; }
          ?在回去重新配置下:
          ? ??? cd /home/sqlite-arm-linux/
          ??? ../sqlite-3.3.6/configure? --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
          中間打印信息出現如下錯誤信息,
          checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling
          但是還是生成了Makefile文件一個libtool腳本,這些將在make時用到.???
          注意:
          如果Makefile文件中有如下語句
          BCC = arm-linux-gcc -g -O2
          請將其改掉,改成:
          BCC = gcc -g -O2 ???
          ???
          編譯并安裝
          ??? make && make install??? ?
          這里如果不出意外,將不會出現錯誤,那么
          庫文件已經生成在 /home/sqlite-ix86-linux/lib 目錄下????
          posted on 2008-03-27 15:53 allic 閱讀(1927) 評論(0)  編輯  收藏 所屬分類: 開源數據庫學習研究
          主站蜘蛛池模板: 建昌县| 绥宁县| 昌吉市| 晋州市| 祥云县| 册亨县| 博爱县| 江孜县| 湖州市| 治县。| 清水县| 左云县| 湖北省| 梁河县| 瑞丽市| 乡城县| 香格里拉县| 天门市| 上饶市| 邻水| 明溪县| 扎鲁特旗| 杭锦后旗| 蒲城县| 郴州市| 宁化县| 鄯善县| 星子县| 秀山| 阳信县| 库尔勒市| 蚌埠市| 九龙县| 肥乡县| 广东省| 习水县| 巧家县| 泸水县| 当雄县| 榆林市| 雷山县|