Я использую php с версией 5.6.31 во встроенном проекте с yocto-linux в качестве операционной системы. То, что я хочу сделать, это иметь драйвер odbc в качестве разделяемой библиотеки вместо жесткой ссылки. Причина этого в том, что у меня есть 2 разных варианта использования с использованием PHP, один из которых требует custom-odbc-driver. Поскольку я строю его для встроенного домена из-за недостатка места, я не хочу добавлять его статически в бинарном PHP. Есть руководство для компилировать расширение php как общее.
Мой квест: можем ли мы иметь драйвер odbc в качестве общей библиотеки? Руководство упомянуло, что не всем, кроме немногих расширений можно поделиться. Я пытался собрать PHP с флагом конфигурации --with-custom-odbc=shared
но это не удалось с фатальной ошибкой:
odbc.h: нет такого файла или каталога.
--with-custom-odbc
пометить требуемый путь при установке odbc. Если у нас может быть драйвер odbc в качестве разделяемой библиотеки, какой флаг конфигурации следует использовать для его описания?
устанавливать unixODBC-devel
:
$ sudo yum install unixODBC unixODBC-devel
$ sudo repoquery --installed -l unixODBC-devel
/usr/include/autotest.h
/usr/include/odbcinst.h
/usr/include/odbcinstext.h
/usr/include/sql.h
/usr/include/sqlext.h
/usr/include/sqltypes.h
/usr/include/sqlucode.h
/usr/include/unixodbc_conf.h
/usr/include/unixodbc_conf_x86_64.h
/usr/include/uodbc_extras.h
/usr/include/uodbc_stats.h
$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: ~/.odbc.ini
$ odbcinst -q -d
[PostgreSQL]
[MySQL]
и настроить PHP
с вариантами:
./configure --with-unixODBC=shared,/usr
когда unixODBC
не доступен как пакет, он может быть построен из исходный код:
$ wget http://www.unixodbc.org/unixODBC-2.3.7.tar.gz
$ tar -xvzf unixODBC-2.3.7.tar.gz
$ cd unixODBC-2.3.7
$ ./configure --help
$ ./configure
$ make
$ sudo make install
есть даже UnixODBC-гуй-кварта фронтэнд для него.
Других решений пока нет …