Компиляция примеров BerkeleyDB.

Я пытаюсь выполнить примеры BerkeleyDB. Я установил BDB с помощью make и make install. В каталоге examples/c я делаю gcc ex_*. C для любого примера, и вот что я получаю. Я иду об этом правильным путем?

ex_access.c: In function ‘main’:
ex_access.c:34: error: ‘DBC’ undeclared (first use in this function)
ex_access.c:34: error: (Each undeclared identifier is reported only once
ex_access.c:34: error: for each function it appears in.)
ex_access.c:34: error: ‘dbcp’ undeclared (first use in this function)
ex_access.c:64: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
ex_access.c:67: error: ‘DB’ has no member named ‘set_errfile’
ex_access.c:68: error: ‘DB’ has no member named ‘set_errpfx’
ex_access.c:69: error: ‘DB’ has no member named ‘set_pagesize’
ex_access.c:70: error: ‘DB’ has no member named ‘err’
ex_access.c:73: error: ‘DB’ has no member named ‘set_cachesize’
ex_access.c:74: error: ‘DB’ has no member named ‘err’
ex_access.c:77: error: ‘DB’ has no member named ‘open’
ex_access.c:78: error: ‘DB_CREATE’ undeclared (first use in this function)
ex_access.c:79: error: ‘DB’ has no member named ‘err’
ex_access.c:107: error: ‘DB_NOOVERWRITE’ undeclared (first use in this function)
ex_access.c:107: warning: passing argument 4 of ‘dbp->put’ makes integer from pointer without a cast
ex_access.c:107: error: too many arguments to function ‘dbp->put’
ex_access.c:111: error: ‘DB’ has no member named ‘err’
ex_access.c:112: error: ‘DB_KEYEXIST’ undeclared (first use in this function)
ex_access.c:120: error: ‘DB’ has no member named ‘cursor’
ex_access.c:121: error: ‘DB’ has no member named ‘err’
ex_access.c:130: error: ‘DB_NEXT’ undeclared (first use in this function)
ex_access.c:134: error: ‘DB_NOTFOUND’ undeclared (first use in this function)
ex_access.c:135: error: ‘DB’ has no member named ‘err’
ex_access.c:141: error: ‘DB’ has no member named ‘err’
ex_access.c:144: error: too many arguments to function ‘dbp->close’
ex_access.c:146: warning: format ‘%s’ expects type ‘char *’, but argument 4 has type ‘int’
ex_access.c:152: error: too many arguments to function ‘dbp->close’

1 ответ

Решение

Это, вероятно, ошибка компоновки. Вам необходимо указать общую библиотеку libdb, например, "-ldb". Если библиотеки Berkeley DB установлены в масштабе всей системы, то можно предположить, что совместно используемые библиотеки и заголовочные файлы устанавливаются в пути по умолчанию (/usr/lib, /usr/lib64, /usr/include). Если нет, то вам нужно явно указать правильные пути. Предполагая установку по умолчанию Berkeley DB, вы можете попробовать что-то вроде

gcc -ldb your_sample.c -o your_sample

Кроме того, ваш вопрос связан с этим постом: БД Berkeley: не может скомпилировать коды C++

В качестве альтернативы, зайдите в папку сборки (например, "build_unix") и запустите "make examples" для сборки примеров.

Другие вопросы по тегам