Проблема сборки sqlite 3.7.4 на CentOS 5.5, чтобы включить поддержку readline - PullRequest
2 голосов
/ 10 января 2011

Библиотека readline позволяет CLI для sqlite принимать клавиши со стрелками для вызова ранее набранных команд.Я могу построить без этого, и sqlite работает, это просто неприятность, не имея этой хорошей возможности.Я установил readline-devel из yum и присутствует /usr/lib64/libreadline.so.5, а также его заголовочные файлы.Когда я запускаю ./configure для сборки sqlite, я вижу следующие строки:

checking for library containing readline... no
checking for readline... no

Путь к библиотеке установлен на правильный путь:

LD_LIBRARY_PATH="/usr/lib64:/usr/local/lib:/lib:/usr/lib"

По умолчанию ./configure делаетпопробуйте включить поддержку readline, чтобы не требовались специальные опции "--with-XXXX".

Кто-нибудь видел эту проблему?Мне нужно использовать эту более новую версию, чтобы получить последнюю поддержку внешнего ключа.Он работает на CentOS так же, как и довольно старые версии приложений, но сейчас у нас нет выбора, и я не могу найти обновленную версию RPM с более новой версией sqlite.

=== ОБНОВЛЕНИЕ ===

Хорошо, я нашел решение, но оно мне не совсем нравится ...

Сначала я попробовал эту опцию:

. / Configure CPPFLAGS = "- I/ usr / include / -DHAVE_READLINE "

Это приводит к компиляции функциональности readline в shell.c, что необходимо для начинающих.Но связывание не удается, потому что он не может найти libreadline.Единственный «грязный» способ, который я мог выяснить, чтобы получить ссылку, - это вручную редактировать Makefile после выполнения вышеуказанной команды ./configure.Я изменил эту строку:

LIBS = -ldl -lpthread

на эту:

LIBS = -ldl -lpthread -lreadline -ltermcap

Затем я запустил «make clean all» и «make install», и функциональность readline работает в CLI.

Я пытался всеми возможными способами передать дополнительные библиотеки, включая экспорт с использованием LIBS, экспорт с использованием READLINE_LIBS, экспорт с использованием LDFLAGS, ничего не получалось.Если вы устанавливаете LIBS на что-либо, например «export LIBS =» - lreadline », это приводит к сбою configure. Похоже, что --help при конфигурировании использования LIBS противоречит тому, что происходит, когда вы фактически устанавливаете любое значение.

В любом случае, это работает, так что я могу с этим смириться - но мне это не особо нравится!: (

==== ПРАВИЛЬНОЕ РЕШЕНИЕ ====

Ну, неужелиВы знаете это. Потратьте часы, пытаясь выяснить это, а затем наткнуться на правильный совет в Google. Просто нужно сначала установить ncurses-devel. Итак, чтобы подвести итог всему, что необходимо для его построения 'unkludgily':

yum install ncurses ncurses-devel 
yum install readline readline-devel 
yum install libtermcap libtermcap-devel
./configure
make
make install

Никаких специальных параметров командной строки, экспорта или редактирования Makefile не требуется! Поддержка Readline теперь автоматически встроена по умолчанию.

...