簡體   English   中英

在C ++中編譯SQlite3

[英]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

但我想解決這個問題,因為我不想在另一台計算機上安裝一些庫,我沒有權限!

  • Step1:通過gcc將sqlite3.c編譯為sqlite3.o
  • 第二步:用g ++編譯你的c ++代碼和sqlite3.o

我的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。

  1. 包含對sqlite的任何引用為extern“C”,因為sqlite是用C語言編寫的。

  2. 使用“gcc -c sqlite3.c”創建sqlite庫。

  3. 使用“g ++ main.c sqlite3.o”將程序鏈接到新創建的庫

需要編譯sqlite3gcc 我嘗試了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

  1. 我在源文件(test.c)中聲明了#include“sqlite3.h”#include不起作用。
  2. gcc -o test test.c sqlite3.c -lpthread -idl

參考如下:

https://www.sqlite.org/draft/howtocompile.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM