S3C2410下嵌入式資料庫SQLite的移植

來源:互聯網
上載者:User

對SQLite-3.3.8(或者SQLite3.3.12)進行交叉編譯,並移植到ARMS3C2410的過程:

要將SQLite3.3.8(或者SQLite-3.3.12)移植到ARM2410開發板上,除了要有底層作業系統的支援外,還必須要有相應的交叉編譯工具鏈。由於ARM2410開發板採用的是ARM-Linux作為底層作業系統,因此需要首先安裝ARM-Linux工具鏈。

1.交叉編譯環境建立:

安裝cross-2.95.3.tar.bz2交叉編譯工具到/usr/arm-linux目錄下。

解壓sqlite-3.3.8到/home/sqlite-3.3.8,並建立檔案夾

cd /home/sqlite-3.3.8

mkdir sqlite-arm-linux

2、修改/home/sqlite-3.3.8目錄下的configure檔案的部分內容

這樣可以讓configure不去檢查你的交叉編譯環境,否則會出現如下同樣的錯誤

checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling,將不能產生Makefile檔案.

20420行 { (exit 1); exit 1; }; }改為 { (echo 1); echo 1; }; }

20446行 { (exit 1); exit 1; }; }改為 { (echo 1); echo 1; }; }

cd /home/sqlite-3.3.8/sqlite-arm-linux

../configure --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux

產生了Makefile檔案,這些將在make時用到.

3、將Makefile檔案中如下語句

BCC = arm-linux-gcc -g -O2

改成:

BCC = gcc -g -O2

4、設定交叉編譯環境

export PATH=/usr/arm-linux/arm/2.95.3/arm-linux/bin:$PATH

設定config_TARGET_CC和config_BUILD_CC兩個環境變數。config_TARGET_CC是交叉編譯器,config_BUILD_CC是主機編譯器:

export config_BUILD_CC=gcc

export config_TARGET_CC=arm-linux-gcc

5、編譯並安裝

make && make install

這裡如果不出意外,將不會出現錯誤,那麼庫檔案已經產生在

/home/sqlite-3.3.8/sqlite-arm-linux/lib目錄下,

庫檔案已經產生在為了減小執行檔案大小可以用strip處理,去掉其中的調試資訊。

arm-linux-strip libsqlit3.so.0.8.6

file sqlite3

sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped

由此可知,此時產生的sqlite檔案是還未strip過的。執行命令arm-linux-strip, 去掉其中的調試資訊,這樣檔案將減少很多。(這一步不知道為什麼我實現不了,但是不影響軟體使用)

arm-linux-strip sqlite3

再次用file命令查看sqlite3的資訊:

file sqlite3

sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped

這就是在開發板上可以直接啟動並執行可執行檔。

6、移植

需要注意:

拷貝是需要加上 –arf選項,因為libsqlite3.so,libsqlite3.so.0是連結到libsqlite3.so.0.8.6的。

cd /home/sqlite-3.3.8/sqlite-arm-linux/lib

cp –arf libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6 /usr/qt-sqlite/lib

cd /home/sqlite-3.3.8/bin

cp     sqlite3 /usr/qt-sqlite

然後把sqlite3和lib下的庫檔案移植到ARM上

7、在ARM板上運行sqlite

將qlite3檔案下載到你的arm板上,

方法很多,你需要根據自己的情況來選擇。如ftp,nfs,串口等。 好,開始運行

chmod +wx sqlite

[root@www.bkjia.com]# ./sqlite3 zieckey.db

./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

這裡是因為剛剛編譯時間編譯的是動態串連庫形式的,所有我們還的將庫檔案下載到ARM板上。

將 /usr/local/arm-linux/sqlite-arm-linux/lib 目錄下所有檔案下到ARM板上。 再次運行,

[root@www.bkjia.com]# ./sqlite3 zieckey.db

./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

還是出錯,哦,我們沒有設定環境變數,

假設我們下在庫檔案在ARM板上的 /usr/qpe/lib/ 目錄下,這裡設定環境就像下面:

[root@www.bkjia.com]# export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH 好了這樣就可以運行了:

[root@www.bkjia.com]# ./sqlite3

SQLite version 3.3.8

Enter ".help" for instructions

sqlite>

看見

sqlite>

提示符號沒有?成功了。哈哈!!

打個“.help”來看看命令先:-)

sqlite>.help

好了。現在sqlite已經在arm-linux下跑了起來。如何,感覺很high吧。

  • 1
  • 2
  • 3
  • 4
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.