關於SQLite3 編譯及交叉編譯的一些問題

2021-10-09 21:33:44 字數 1801 閱讀 2355

**:

分別交叉編譯這兩個包:

sudo ./configure --host=arm-linux --prefix=/opt/

sudo make

sudo make install

--host接的是arm的交叉編譯器的名稱,--prefix接的是編譯好之後安裝到的路徑,這裡建議不要直接安裝到交叉編譯器的路徑,而是安裝到其它地方,等安裝完之後到目標目錄確認一下之後再手動拷到交叉編譯器的目錄裡面去。

待兩個包編譯安裝完之後,還要手動拷到交叉編譯器的路徑裡面去,這裡我以安裝在/usr/local/arm/3.4.6目錄裡面的3.4.6版本的交叉編譯器為例。進入到剛才編譯安裝好的那兩個包的目錄,裡面應該有bin include share lib等目錄,在那個目錄裡面,執行如下命令

sudo cp -pr * /usr/local/arm/3.4.6/arm-linux

這裡有兩個個人認為需要注意的問題。

1. cp -p的引數是複製檔案的屬性、擁有者、符號鏈結等所有屬性,而-r是遞迴複製,也就是拷貝下面的所有目錄和檔案過去。而目標目錄並不是/usr/local/arm/3.4.6,而是其下面的arm-linux這個目錄,需要注意一下。當然3.4.6版本的交叉編譯器是這樣子的,別的版本的交叉編譯器請自行參考。

2. 這兩個庫不僅要安裝到交叉編譯器裡面去,更是建議把它安裝到開發板的根檔案系統裡面去,因為個人的2440的根檔案系統是用nfs掛在pc上的,所以只要用cp -pr把所有東西直接拷過去就行了,其它方法做的根檔案系統請自行想辦法解決。至少需要把libreadline的庫拷到根檔案系統裡面去,不然交叉編譯好的sqlite3會因為缺少libreadline的庫而拒絕執行。

在上面的工作都準備好之後,進入以sqlite3-autoconf的目錄裡面去,執行:

sudo ./configure --host=arm-linux --prefix=/opt/sqlite3

這個configure的引數跟上面的編譯readline和ncurses是一樣的意思,跟上面在pc上configure之後輸出的資訊一樣,也要找到有-lncurses和-lreadline且readline為yes的時候,才能正常啟用上下鍵調出命令記錄的功能。

然後執行

sudo make

sudo make install

安裝完成之後,再把安裝目錄裡面的所有檔案都拷到開發板的根檔案系統裡面去,用minicom連線到2440的linux,執行一下sqlite3這個程式,如果你是按上文來做的話,應該不會有問題,而且可以支援上下鍵顯示歷史命令記錄這個實用功能了。

另外還有乙個比較有意思的問題,如果不給交叉編譯器加上ncurses和readline這兩個庫的支援,直接用上面的configure來生成makefile,make之後將會有有個錯誤無法通過編譯,只能手動去改makefile,好像是makefile有個地方多了個斜槓,把那個斜槓去掉之後就可以編譯通過了。但是把交叉編譯器打上ncurses和readline庫之後,這個錯誤就不會再出現了。

再下面就是做sqlite3應用開發的編譯上的小問題了。

在pc上寫完**之後編譯的時候使用的選項應該是這樣的:

gcc -o name name.c -lsqlite3

最後那個-lsqlite3是引用sqlite3的開發庫。

而交叉編譯的時候就有些不一樣了:

arm-linux-gcc -o name name.c -i /opt/sqlite3/include -l /opt/sqlite3/lib -lsqlite3

-i接的是交叉編譯後安裝的arm版的sqlite3目錄裡面的標頭檔案,而-l則是包含的庫檔案。

這樣的編譯選項編譯之後,拷到開發板上去,執行,ok!

Linux下交叉編譯sqlite3並移植到ARM

交叉編譯sqlite3的目的 作用 能在x86的平台下交叉編譯出能在arm開發板執行的程式。將sqlite3移植到arm的目的 作用 能在arm開發板上建資料庫和對資料庫進行增刪查改。交叉編譯sqlite3 安裝的操作過程基本跟在linux下安裝x86平台的sqlite3一樣 linux下安裝sql...

sqlite3 編譯問題

sqlite3用到libpthread和libdl因此要鏈結這兩個庫 假如先把sqlite3.c編譯成sqlite3.o或者libsqlite3.a g lm lpthread ldl o 目標 main.o sqlite3.o 或者 g lm lpthread ldl lsqlite3 o 目標 ...

sqlite3加密編譯

廢話不多說,直接貼出方法,目的在於請路過老鳥幫助測試一下功能是否全面,是否真正實現了加密 反正我用記事本開啟生成的db檔案看不到寫入記錄的明文了 codec.c codec.h rijndael.c rijndael.h codecext.c 二 sqlite3的加密函式說明 sqlite3 key...