[英]Compiling of SQlite3 in C++
我用這種方式編譯代碼:
g++ main.cpp -I sqlite3
其中sqlite3是我從sqlite-amalgamation-3071100.zip收到的源文件的文件夾,-I是包含源的標志。
該存檔包含:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h。
這是我收到的:
undefined reference to `sqlite3_open'
該程序只包含#include和函數調用sqlite3_open(...);
如果我制作“sudo apt-get install libsqlite3-dev”並使用命令編譯程序,我可以編譯好
g++ main.cpp -lsqlite3
但我想解決這個問題,因為我不想在另一台計算機上安裝一些庫,我沒有權限!
我的sqlite shell和c ++ api測試的makefile:
1 CXX = g++
2 cc = gcc
3
4 LIB = -lpthread -ldl
5 BIN = sqlite apiTest
6
7 all : $(BIN)
8 sqlite : sqlite3.c shell.c
9 $(cc) -o $@ $^ $(LIB)
10 apiTest : apiTest.cpp sqlite3.o
11 $(CXX) -o $@ $^ $(LIB)
12 sqlite3.o : sqlite3.c
13 $(cc) -o $@ -c $^
14
15 clean :
16 rm -f $(BIN)
17
18 .PHONY: all, clean
從http://www.sqlite.org/download.html下載sqlite amalgamation。
包含對sqlite的任何引用為extern“C”,因為sqlite是用C語言編寫的。
使用“gcc -c sqlite3.c”創建sqlite庫。
使用“g ++ main.c sqlite3.o”將程序鏈接到新創建的庫
您將需要編譯sqlite3
與gcc
。 我嘗試了g++
,結果是數以百計的錯誤和警告。
也許sqlite3
shoule的編寫方式可以用C ++編譯器編譯。 C ++編譯器更加挑剔並強制執行類型,並且比C編譯器更好。
在具有MinGW32的Windows上,通過以下方式編譯動態鏈接庫:
gcc -shared sqlite3.c -o sqlite3.dll
以下在Ubuntu上為我工作:
gcc -o test test.c sqlite3.c -lpthread -idl
參考如下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.