將sqlite3移植到嵌入式Linux開發(fā)板M6708上
最近,因為項目的需要,我們購買了廣州致遠(yuǎn)電子有限公司的M6708-T工控板(預(yù)裝Linux系統(tǒng)),準(zhǔn)備將sqlite3移植到本嵌入式開發(fā)板上。筆者參考了網(wǎng)上的很多文章,均無法達(dá)到成功移植的目的。在多方摸索之下,終于采用了一種簡單的方法成功實現(xiàn)了移植。本文介紹如何成功地將sqlite3移植到M6708-T工控板上,可供相關(guān)的開發(fā)人員參考。
準(zhǔn)備工作
在本機上安裝好Linux系統(tǒng)(一般都是安裝在虛擬機上面的),并按照工控板的用戶手冊在Linux系統(tǒng)上安裝交叉開發(fā)的工具鏈。
將工控板上電,能夠通過串口或網(wǎng)絡(luò)等方式登錄到Linux系統(tǒng)中。這里建議為工控板設(shè)置靜態(tài)的ip地址,這樣以后上傳程序比較方便。
登錄到sqlite的官網(wǎng)(https://www.sqlite.org/)上去下載***的sqlite源代碼,如下截圖所示:
移植步驟
***步:將sqlite源代碼拷貝到虛擬機的Linux系統(tǒng)目錄中,并使用命令tar xvf sqlite-autoconf-3200100.tar.gz解壓,生成sqlite-autoconf-3200100目錄,轉(zhuǎn)到該目錄中,可看到文件列表如下截圖所示:
第二步:使用交叉編譯工具編譯代碼,生成sqlite的可執(zhí)行文件。在編譯之前,可以用echo $CC命令查看系統(tǒng)上的編譯工具是否是交叉編譯工具而非系統(tǒng)自帶的gcc,執(zhí)行該命令后的結(jié)果如下截圖所示:
確認(rèn)交叉編譯工具正確之后,便可執(zhí)行命令$CC sqlite3.c shell.c -o sqlite3 -lpthread –ldl生成可執(zhí)行文件sqlite3,執(zhí)行該命令后的結(jié)果如下截圖所示:
第三步:將生成的可執(zhí)行文件sqlite3從虛擬機拷貝到本機目錄下,并利用FTP工具將之上傳到工控板的目錄下。這里,筆者使用了FileZilla軟件將sqlite3上傳到/usr/local/DT/sqlite目錄下,如下截圖所示:
第四步:將上傳之后的sqlite3文件移動到/usr/bin目錄下,并賦予可執(zhí)行的權(quán)限。執(zhí)行mv sqlite3 /usr/bin/命令移動文件,并使用命令chmod 777 sqlite3修改權(quán)限。命令執(zhí)行過程的截圖如下所示:
第五步:執(zhí)行命令sqlite3即可成功啟動數(shù)據(jù)庫。數(shù)據(jù)庫啟動之后的截圖如下所示:
通過以上五個步驟,sqlite就被成功移植到了工控板上,接下來便可以進行建表等操作了,也可以編寫代碼調(diào)用數(shù)據(jù)庫的API實現(xiàn)對數(shù)據(jù)的存儲及讀取操作了。
總結(jié)
在很多參考文章中,都是通過運行configure和make命令來生成sqlite3可執(zhí)行文件的,筆者最開始也使用了這種方法,但生成的可執(zhí)行文件在工控板上無法運行。筆者重復(fù)試了很多次,也沒有找到無法成功移植的原因。因此采用了在本文中描述的方法,輕松實現(xiàn)了sqlite數(shù)據(jù)庫的移植。
當(dāng)然,相比于PC版的Linux來說,嵌入式開發(fā)板上的Linux的功能被裁剪了很多,這也導(dǎo)致了很多命令是沒有的。我們在將一些程序移植到嵌入式開發(fā)板上的時候,一定要意識到它與普通的操作系統(tǒng)之間的差別。
【本文是51CTO專欄作者周兆熊的原創(chuàng)文章,作者微信公眾號:周氏邏輯(logiczhou)】