РЕШЕНИЕ: Я только что добавил -lpthread -ldl
flags в мой make-файл, и он работает! Понятия не имею почему, но мне посчастливилось избежать ручной компиляции sqlite3, как я пытался ... Хм, в любом случае, некоторые ответы были довольно хорошими. Спасибо, ребята, пойду и выпью чаю для вас.
Три месяца назад я смог найти, как это сделать, но теперь это не работает. У меня огромное приложение на C ++, где мне нужно встраивать код sqlite3, но я не могу его скомпилировать. Я использую что-то вроде этого:
gcc sqlite3.c -lpthread -ldl -o ./sqlite3.o
Но это не работает; Я перепробовал много вариантов. У меня есть make-файл, куда я добавил файлы 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 отдельно от приложения. Ну, я застрял.