PHP odbc驱动程序作为共享扩展

Par*_*iya 8 php linux odbc build yocto

我在嵌入式项目中使用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驱动程序作为共享库,那么应该使用哪个配置标志来描述它?

Mar*_*ler 4

首次安装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]
Run Code Online (Sandbox Code Playgroud)

然后PHP配置--with-unixODBC

./configure --with-unixODBC=shared,/usr
Run Code Online (Sandbox Code Playgroud)

当不能作为包提供时,也可以从源代码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
Run Code Online (Sandbox Code Playgroud)

甚至还有一个 Qt 前端:unixodbc-gui-qt