解決方案:我只是將-lpthread -ldl
標誌添加到我的生成文件,它的工作原理!不知道爲什麼,但我很幸運,以避免手動編譯sqlite3,因爲我正在嘗試..嗯,無論如何,一些答案在哪裏很不錯。謝謝你們,我們會爲你喝點茶。如何在我的C++應用程序中編譯sqlite3?
三個月前,我能夠找到如何做到這一點,但現在它不工作。我有一個巨大的C++應用程序,我需要嵌入sqlite3代碼,但我無法編譯它。我使用這樣的東西:
gcc sqlite3.c -lpthread -ldl -o ./sqlite3.o
但它不工作;我嘗試了很多變化。我有一個makefile,在那裏我添加了sqlite3.h和sqlite3.c文件。當我在我的應用程序的特定文件夾做make && make install
,它顯示錯誤:
.libs/sqlite3.o: In function `pthreadMutexTry':
/home/.../client/sqlite3.c:17769: undefined reference to `pthread_mutex_trylock'
.libs/sqlite3.o: In function `pthreadMutexAlloc':
/home/.../client/sqlite3.c:17637: undefined reference to `pthread_mutexattr_init'
/home/.../client/sqlite3.c:17638: undefined reference to `pthread_mutexattr_settype'
/home/.../client/sqlite3.c:17640: undefined reference to `pthread_mutexattr_destroy'
這意味着,我需要添加-lpthread
標誌,試圖從應用程序分別編譯sqlite3的時候。那麼,我卡住了。
也許你應該發佈你的Makefile ... – 2012-01-02 15:05:06
SQLite郵件列表幾乎肯定會是一個更合適的地方。這不是關於編程語言的問題,而是關於構建問題的個人協助請求。 – 2012-01-02 15:17:42
好的,很抱歉,會轉到他們的郵件列表。不過,我不想爲了解決這個問題而簽署這份清單。因此我會殺死自己。 – 2012-01-02 15:23:49