要將或者SQLite-3.3.12移植到ARM2410開(kāi)發(fā)板上,除了要有底層操作系統(tǒng)的支持外,還必須要有相應(yīng)的交叉編譯工具鏈。由于ARM2410開(kāi)發(fā)板采用的是ARM-Linux作為底層操作系統(tǒng),因此需要首先安裝ARM-Linux工具鏈。
1.交叉編譯環(huán)境建立:
拷貝cross-2.95.3.tar.bz2(或者cross-3.3.2.tar.gz)到/usr/local目錄下并解壓縮。
cp cross-2.95.3.tar.bz2 /usr/local/arm
tar –jxvf cross-2.95.3.tar.bz2 2、設(shè)置交叉編譯環(huán)境
export PATH=/usr/local/arm/2.95.3/arm-linux/bin:$PATH
設(shè)置config_TARGET_CC和config_BUILD_CC兩個(gè)環(huán)境變量。config_TARGET_CC是交叉編譯器,config_BUILD_CC是主機(jī)編譯器:
export config_BUILD_CC=gcc
export config_TARGET_CC=arm-linux-gcc
把sqlite-3.3.12解壓到/home/sqlite-3.3.12,并創(chuàng)建文件夾
cd /home/sqlite-3.3.12
本文引用地址:http://m.butianyuan.cn/article/201611/319121.htm mkdir sqlite-arm-linux
3、修改/home/sqlite-3.3.12目錄下的 configure 文件的部分內(nèi)容
這樣可以讓configure不去檢查你的交叉編譯環(huán)境,否則會(huì)出現(xiàn)如下同樣的錯(cuò)誤
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.12/sqlite-arm-linux
../configure --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
生成了Makefile文件,這些將在make時(shí)用到.
4、將Makefile文件中如下語(yǔ)句
BCC = arm-linux-gcc -g -O2
改成:
BCC = gcc -g -O2
5、編譯并安裝
make
make install
這里如果不出意外,將不會(huì)出現(xiàn)錯(cuò)誤,那么庫(kù)文件已經(jīng)生成在
/home/sqlite-3.3.12/sqlite-arm-linux/lib目錄下,
庫(kù)文件已經(jīng)生成在為了減小執(zhí)行文件大小可以用strip處理,去掉其中的調(diào)試信息。
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
由此可知,此時(shí)生成的sqlite文件是還未strip過(guò)的。執(zhí)行命令arm-linux-strip, 去掉其中的調(diào)試信息,這樣文件將減少很多。
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
這就是在開(kāi)發(fā)板上可以直接運(yùn)行的可執(zhí)行文件。
6、移植
需要注意:
拷貝是需要加上 –arf選項(xiàng),因?yàn)閘ibsqlite3.so.0,libsqlite3.so是鏈接到libsqlite3.so.0.8.6 的。
cd /home/sqlite-3.3.12/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下的庫(kù)文件 移植到ARM上
評(píng)論