Как проверить, скомпилирован ли sqlite3 с HAVE_USLEEP - PullRequest
2 голосов
/ 07 января 2020

Я хотел бы проверить, скомпилирован ли мой двоичный файл sqlite3 с опцией HAVE_USLEEP.

Опция компиляции называется здесь и здесь .

Я хотел проверить это с PRAGMA compile_options;, но он не возвращает HAVE_USLEEP ни при одной из моих попыток компиляции.

Чтобы скомпилировать sqlite, который я запускаю:

export CFLAGS="-DHAVE_USLEEP"
./configure
make

, который дает мне много выходных данных, заканчивающихся отчетом libtool, который, кажется, включает -DHAVE_USLEEP

libtool: link: gcc -DHAVE_USLEEP -DSQLITE_OS_UNIX=1 ....

configure также сообщает usleep присутствует.

Однако сеанс со скомпилированным двоичным файлом выглядит следующим образом:

user@pc:~/Downloads/sqlite$ ./sqlite3 
SQLite version 3.31.0 2020-01-07 09:06:43
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> PRAGMA compile_options;
COMPILER=gcc-4.8.4
ENABLE_DBSTAT_VTAB
ENABLE_FTS4
ENABLE_JSON1
ENABLE_RTREE
ENABLE_STMTVTAB
ENABLE_UNKNOWN_SQL_FUNCTION
HAVE_ISNAN
THREADSAFE=1
sqlite> 

Я пробовал оба -DHAVE_USLEEP и -DHAVE_USLEEP=1.

На данный момент я не знаю, как к этому подойти - кажется, что DHAVE_USLEEP передается в libtool, но опция отсутствует в отчете. Я либо скомпилировал его без опции (как-то), либо PRAGMA compiled_options не возвращает DHAVE_USLEEP. Я ищу способ дифференциации состояний, чтобы иметь возможность отладить его дальше.

Спасибо за любую идею относительно этого.

1 Ответ

1 голос
/ 07 января 2020

Просто посмотрите, существует ли символ в библиотеке sqlite:

$ nm /path/to/your/libsqlite3.a | grep usleep
             U usleep
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...