我在以 yocto-linux 作为操作系统的嵌入式项目中使用版本为 5.6.31 的 php。我想要做的是将 odbc 驱动程序作为共享库而不是硬链接(hard link)。这样做的原因是我有 2 个不同的使用 PHP 的用例,其中一个需要 custom-odbc-driver。由于空间问题,我正在为嵌入式域构建它,所以我不想将它静态添加到 PHP 二进制文件中。有指南可用compile php extension as shared .
我的问题是我们可以将 odbc 驱动程序作为共享库吗?指南提到,除了少数扩展名外,并非所有扩展名都可以共享。我尝试使用配置标志 --with-custom-odbc=shared
构建 PHP,但它因 fatal error 而失败:
odbc.h : No such file or directory .
--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]
然后使用--with-unixODBC
配置PHP
:
./configure --with-unixODBC=shared,/usr
当 unixODBC
不能作为包使用时,它也可以从 source code 构建:
$ 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
它甚至还有一个 Qt 前端:unixodbc-gui-qt .
关于PHP odbc 驱动程序作为共享扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774481/