交叉編譯 手動安裝 SQLite 庫 移植ARM

# 下載源碼
wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz
tar -xzf sqlite-autoconf-3420000.tar.gz
cd sqlite-autoconf-3420000





cd /home/lxh/sqlite-autoconf-3420000
make distclean? ?//清除下,因為我安裝失敗過。
./configure --host=arm-linux-gnueabihf \
--prefix=/home/lxh/arm-libs/install \
CFLAGS="-Os"

make -j$(nproc)


make install



檢查生成的庫文件
:ls -lh /home/lxh/arm-libs/install/lib/libsqlite3.*

#include "sqlite_query.h"
#include <stdio.h>
#include <stdlib.h>
#include "/usr/include/sqlite3.h"// 查詢結果回調函數類型定義
typedef int (*QueryCallback)(void *data, int argc, const char **argv, const char **col_name);int query_aircraft_by_icao(const char *db_path,const char *icao,QueryCallback callback,void *user_data);int query_aircraft_by_icao(const char *db_path,const char *icao,QueryCallback callback,void *user_data)
{sqlite3 *db;int rc;rc = sqlite3_open(db_path, &db);if (rc != SQLITE_OK){fprintf(stderr, "無法打開數據庫: %s\n", sqlite3_errmsg(db));return rc;}const char *sql = "SELECT * FROM aircraft_data WHERE icao = ?;";sqlite3_stmt *stmt;rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);if (rc != SQLITE_OK){fprintf(stderr, "準備SQL失敗: %s\n", sqlite3_errmsg(db));sqlite3_close(db);return rc;}sqlite3_bind_text(stmt, 1, icao, -1, SQLITE_STATIC);while ((rc = sqlite3_step(stmt)) == SQLITE_ROW){int col_count = sqlite3_column_count(stmt);const char **argv = (const char **)malloc(col_count * sizeof(const char *));const char **col_name = (const char **)malloc(col_count * sizeof(const char *));for (int i = 0; i < col_count; i++){col_name[i] = sqlite3_column_name(stmt, i);argv[i] = (const char *)sqlite3_column_text(stmt, i);}if (callback){callback(user_data, col_count, argv, col_name);}free((void *)argv);free((void *)col_name);}if (rc != SQLITE_DONE){fprintf(stderr, "查詢執行錯誤: %s\n", sqlite3_errmsg(db));}sqlite3_finalize(stmt);sqlite3_close(db);return (rc == SQLITE_DONE) ? SQLITE_OK : rc;
}static int print_result(void *data, int argc, const char **argv, const char **col_name)
{printf("----- 找到記錄 -----\n");for (int i = 0; i < argc; i++){printf("%-12s: %s\n", col_name[i], argv[i] ? argv[i] : "NULL");}return 0;
}int main()
{const char *db_path = "/usr/local/test/radardata.db";const char *icao = "780CAF";printf("正在查詢 ICAO: %s...\n", icao);int ret = query_aircraft_by_icao(db_path, icao, print_result, NULL);if (ret != SQLITE_OK){fprintf(stderr, "查詢失敗 (錯誤碼: %d)\n", ret);return 1;}return 0;
}
# 工具鏈設置(如果是交叉編譯,取消下面兩行注釋)
# CROSS_COMPILE = arm-linux-gnueabihf-
# CC = $(CROSS_COMPILE)g++# 如果是本地編譯,使用g++
CC = arm-linux-gnueabihf-gcc
CURL_DIR = /home/lxh/arm-libs/install
# 編譯選項
CFLAGS =-I$(CURL_DIR)/include -I. -g -Wall
LDFLAGS =-L$(CURL_DIR)/lib  -lsqlite3 -lpthread# 目標文件
TARGET = sqlite_query
SRCS = sqlite_query.cpp 
OBJS = $(SRCS:.cpp=.o)# 默認目標
all: $(TARGET)# 主目標
$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)# 生成.o文件
%.o: %.cpp$(CC) $(CFLAGS) -c $< -o $@# 清理
clean:rm -f $(OBJS) $(TARGET)# 運行測試
run: $(TARGET)./$(TARGET)# 數據庫查看
db:sqlite3 radardata.db ".schema"sqlite3 radardata.db "SELECT * FROM aircraft_data;"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93870.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

翻譯記憶庫(TMX)與機器翻譯的結合應用

更多內容請見: 機器翻譯修煉-專欄介紹和目錄 文章目錄 一、核心概念解析 1.1 翻譯記憶庫 (Translation Memory, TM) 1.2 翻譯記憶交換格式 (Translation Memory eXchange, TMX) 二、為何要將兩者結合? 2.1 TM和MT的優勢是高度互補的 2.2 TMX在結合中的關鍵作用 2.3 TMX與MT的…

SpringBoot中集成eclipse.paho.client.mqttv3實現mqtt客戶端并支持斷線重連、線程池高并發改造、存儲入庫mqsql和redis示例業務流程,附資源下載

場景 SpringBoot整合MQTT服務器實現消息的發送與訂閱(推送消息與接收推送)&#xff1a; SpringBoot整合MQTT服務器實現消息的發送與訂閱(推送消息與接收推送)_服務端接收mqtt消息-CSDN博客 上面SpringBoot集成MQTT使用的是spring-integration-mqtt依賴&#xff0c;也是經常使…

【考研408數據結構-08】 圖論基礎:存儲結構與遍歷算法

&#x1f4da; 【考研408數據結構-08】 圖論基礎&#xff1a;存儲結構與遍歷算法 &#x1f3af; 考頻&#xff1a;????? | 題型&#xff1a;選擇題、綜合應用題、算法設計題 | 分值&#xff1a;約8-15分 引言 想象你正在規劃一次跨省自駕游&#xff0c;面前攤開一張復雜的…

SQL查詢語句的執行順序

好的&#xff0c;我們來詳細講解一下 SQL 查詢語句的執行順序。 很多人會誤以為 SQL 的執行順序就是我們寫的順序&#xff08;SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY&#xff09;&#xff0c;但實際上&#xff0c;數據庫引擎在底層處理查詢…

【Android】OKHttp網絡請求原理和弱網優化

【Android】OKHttp網絡請求原理和弱網優化 1. OkHttp 網絡請求原理 OkHttp 的請求過程可以分為 四個關鍵階段&#xff1a; &#xff08;假設你是通過 OkHttpClient.newCall(request).enqueue(callback) 發的請求&#xff09; OkHttpClient│▼ Dispatcher (調度器)│▼ RealC…

概率論基礎教程第4章 隨機變量(四)

4.7 泊松隨機變量 定義 泊松隨機變量&#xff1a;如果一個取值于 $ 0, 1, 2, \ldots $ 的隨機變量對某一個 $ \lambda > 0 $&#xff0c;其分布列為&#xff1a; p(i)P{Xi}e?λλii!i0,1,2,?(7.1) \boxed{p(i) P\{X i\} e^{-\lambda} \frac{\lambda^i}{i!} \qquad i 0…

Unity高級開發:反射原理深入解析與實踐指南 C#

Unity高級開發&#xff1a;反射原理深入解析與實踐指南 在Unity游戲開發中&#xff0c;反射&#xff08;Reflection&#xff09; 是一項強大的元編程技術&#xff0c;它允許程序在運行時動態地獲取類型信息、創建對象和調用方法。根據Unity官方統計&#xff0c;超過78%的商業游…

任務五 推薦頁面功能開發

一、推薦頁面需求分析 由推薦頁面效果圖,可以看出,推薦頁面主要由頂部輪播圖和歌單列表頁面組成 二、推薦頁面輪播圖組件封裝 由于輪播圖,可能在項目多個地方用到,因此可以將輪播圖抽調成一個組件,然后各個頁面調用這個組件。 在開發輪播圖組件時,需要安裝better-scro…

【工具使用-Docker容器】構建自己的鏡像和容器

1. 鏡像和容器介紹 鏡像&#xff08;Image&#xff09;是一個只讀的模板&#xff0c;包含了運行某個應用所需的全部內容&#xff0c;比如&#xff1a; 操作系統&#xff08;比如 Ubuntu&#xff09;應用程序代碼運行環境&#xff08;如 Python、Java、Node.js 等&#xff09;庫…

Apache Shiro550 漏洞(CVE-2016-4437):原理剖析與實戰 SOP

在 Web 安全領域&#xff0c;反序列化漏洞一直是威脅等級極高的存在&#xff0c;而 Apache Shiro 框架中的 Shiro550 漏洞&#xff08;CVE-2016-4437&#xff09;&#xff0c;更是因利用門檻低、影響范圍廣&#xff0c;成為滲透測試中頻繁遇到的經典漏洞。本文將從 “原理拆解”…

安卓開發者自學鴻蒙開發3持久化/數據與UI綁定

AppStorage,PersistentStorage與StorageLink AppStorage是應用全局狀態管理器,數據存儲于內存中,常見的如全局的黑暗模式,StorageLink是用來綁定AppStorage的鍵到ui上的工具,省去了用戶手寫代碼的無聊過程,PersistentStorage可以綁定AppStorage的鍵,自動持久化到磁盤,同時支持多…

GitHub宕機生存指南:從應急協作到高可用架構設計

GitHub宕機生存指南&#xff1a;從應急協作到高可用架構設計 摘要&#xff1a; GitHub作為全球開發者的協作中心&#xff0c;其服務穩定性至關重要。然而&#xff0c;任何在線服務都無法保證100%的可用性。本文深入探討了當GitHub意外宕機時&#xff0c;開發團隊應如何應對。我…

機器學習算法篇(十三)------詞向量轉化的算法思想詳解與基于詞向量轉換的文本數據處理的好評差評分類實戰(NPL基礎實戰)

目錄 一、詞向量原理介紹 (1). 詞向量的核心概念 (2). 傳統文本表示的局限性 1. 獨熱編碼&#xff08;One-Hot Encoding&#xff09; 2. 詞袋模型&#xff08;Bag of Words&#xff09; 3. TF-IDF (3). 詞向量的核心原理 (4). 主流詞向量模型 1. Word2Vec&#xff08;20…

JS自定義函數(2)

1. 變量的作用域全局變量定義&#xff1a;在函數外聲明的變量作用范圍&#xff1a;在整個JS文檔中生效生命周期&#xff1a;頁面關閉時銷毀局部變量定義&#xff1a;在函數內用 var 聲明的變量作用范圍&#xff1a;只能在函數內部使用生命周期&#xff1a;函數執行完畢時銷毀作…

【數據集】Argoverse 數據集:自動駕駛研究的強大基石

Argoverse數據集&#xff1a;自動駕駛研究的強大基石 在自動駕駛技術蓬勃發展的當下&#xff0c;高質量的數據集對于推動相關算法研究和模型訓練起著舉足輕重的作用。Argoverse 數據集便是其中的佼佼者&#xff0c;它為自動駕駛領域的眾多任務提供了豐富且優質的數據資源。 一、…

--- 哈希表和哈希沖突 ---

哈希&#xff08;散列&#xff09;方法是對插入的數據通過哈希函數計算出一個哈希地值&#xff0c;并將這個哈希地址作為儲存改數據的地址&#xff0c;這樣下次再查找這個數據時&#xff0c;只需要通過哈希函數再獲取到該地址然后直接去拿就好這樣就做到了不經過任何比較&#…

數學建模-評價類問題-優劣解距離法(TOPSIS)

1-AI帶你認識TOPSIS&#x1f4d8; 一、TOPSIS 方法簡介1. ??基本定義&#xff1a;????TOPSIS&#xff08;Technique for Order Preference by Similarity to an Ideal Solution&#xff09;??&#xff0c;中文通常稱為&#xff1a;???優劣解距離法?????逼近理想…

Go協程:從匯編視角揭秘實現奧秘

&#x1f680; Go協程&#xff1a;從匯編視角揭秘實現奧秘 #Go語言 #協程原理 #并發編程 #底層實現 引用&#xff1a; 關于 Go 協同程序&#xff08;Coroutines 協程&#xff09;、Go 匯編及一些注意事項。 &#x1f31f; 前言&#xff1a;重新定義并發編程范式 在當今高并發…

MySQL 事務(重點)

MySQL 這個東西注定是可能會被多個用戶/客戶端來同時訪問的&#xff0c;這是肯定的&#xff0c;MySQL 中存放的都是數據&#xff0c;數據可能有一個上層線程在用&#xff0c;也有可能另一個線程也要用...數據是被所有人共享的&#xff0c;所以就注定了 MySQL 這樣的服務在一個時…

uniapp:h5鏈接拉起支付寶支付

場景&#xff1a;APP內點擊支付寶支付&#xff0c;后臺返回類似鏈接https://qr.alipay.com/bax***********c3050 通常做法是&#xff0c;使用plus.runtime.openURL(deeplink);先打開瀏覽器&#xff0c;瀏覽器會提示打開支付寶&#xff0c;之后是支付流程。現在可以省略跳轉h5的…