编译php7.4和php8.0编译安装,pkg-config详情

2022年12月21日15:49:28
官网连接:https://www.php.net/manual/zh/migration74.other-changes.php#migration74.other-changes.pkg-config

一些扩展已经迁移到只使用 pkg-config 来检测库的依赖性。一般来说,这意味着不再用 --with-foo-dir=DIR 或类似的参数,而是使用 --with-foo。自定义库的路径可以通过向 PKG_CONFIG_PATH 添加额外的目录,或通过 FOO_CFLAGS 和 FOO_LIBS 来明确指定。
以下扩展和 SAPI 会受到影响:

CURL:
--with-curl 选项不再接受一个目录。
Enchant:
--with-enchant 选项不再接受一个目录。
FPM:
--with-fpm-systemd now uses only pkg-config for libsystem checks. The libsystemd minimum required version is 209.
GD:
--with-gd 改变为 --enable-gd (whether to enable the extension at all) 和 --with-external-gd (to opt into using an external libgd, rather than the bundled one).
--with-png-dir 参数被移除。需要 libpng 支持。
--with-zlib-dir 参数被移除。需要 zlib 支持。
--with-freetype-dir 改变为 --with-freetype
--with-jpeg-dir 改变为 --with-jpeg
--with-webp-dir 改变为 --with-webp
--with-xpm-dir 改变为 --with-xpm
IMAP:
--with-kerberos-systemd 选项不再接受一个目录。
Intl:
--with-icu-dir 被移除。如果使用了 --enable-intl 参数,需要 libicu 支持。
LDAP:
--with-ldap-sasl 选项不再接受一个目录。
Libxml:
--with-libxml-dir 被移除。
--enable-libxml 改变为 --with-libxml。
--with-libexpat-dir 被重命名为 --with-expat 并且该选项不再接受一个目录。
Litespeed:
--with-litespeed 改变为 --enable-litespeed。
Mbstring:
--with-onig 被移除。如果指定了 --disable-mbregex 参数,则需要 libonig 支持。
ODBC:
--with-iodbc 选项不再接受一个目录。
--with-unixODBC without a directory now uses pkg-config (preferred). Directory is still accepted for old versions without libodbc.pc.
OpenSSL:
--with-openssl 选项不再接受一个目录。
PCRE:
--with-pcre-regex 被移除。Instead --with-external-pcre is provided to opt into using an external PCRE library, rather than the bundled one.
PDO_SQLite:
--with-pdo-sqlite 选项不再接受一个目录。
Readline:
--with-libedit 选项不再接受一个目录。
Sodium:
--with-sodium 选项不再接受一个目录。
SQLite3:
--with-sqlite3 选项不再接受一个目录。
XSL:
--with-xsl 选项不再接受一个目录。
Zip:
--with-libzip 被移除。
--enable-zip 改变为 --with-zip。

注意:这里的是一些扩展扩展迁移了,但是有些第三方扩展库是没有做好的,例如libiconv,如果你其他扩展依赖的库没做*.pc文件来支持读取pkgconfig,那就无法链接成功,但是可以使用自定义库的路径可以通过向 PKG_CONFIG_PATH 添加额外的目录

这里都是php7.4以上的,包含php7.4

[root@localhost pkgconfig]# pwd
/usr/local/lib/pkgconfig
[root@localhost pkgconfig]# ll
total 12
-rw-r--r-- 1 root root 341 Dec 28 17:26 libpcre2-8.pc
-rw-r--r-- 1 root root 310 Dec 28 17:26 libpcre2-posix.pc
-rw-r--r-- 1 root root 262 Dec 28 20:02 libzip.pc

vi /etc/profile
添加
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

source /etc/profile

libzip.pc的内容

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

zipcmp=/usr/local/bin/zipcmp

Name: libzip
Description: library for handling zip archives
Version: 1.3.2
Libs:  -L${libdir} -lzip -lbz2 -lz
Cflags: -I${includedir}

可以增加多个PKG_CONFIG_PATH的路径

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/opt/dav1d/dist/lib64/pkgconfig:$PKG_CONFIG_PATH

如果以上的还是不能找到需要链接的库文件,就只能通过 修改/etc/ld.so.conf
此文件记录了编译时使用的动态库的路径,也就是加载so库的路径
vi /etc/ld.so.conf

include ld.so.conf.d/*.conf
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64

ldconfig 生效配置文件

默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通常通过源码包进行安装时,如果不
指定--prefix会将库安装在/usr/local目录下,而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录>。这样虽然安装了源码包,但是使用时仍然找不到相关的.so库,就会报错。也就是说系统不知道安装了源码包。
对于此种情况有2种解决办法:
(1)在用源码安装时,用--prefix指定安装路径为/usr/lib。这样的话也就不用配置PKG_CONFIG_PATH
(2) 直接将路径/usr/local/lib路径加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加:/usr/local/lib(这个方法给力!)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值