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 来明确指定。
注意:这里的是一些扩展扩展迁移了,但是有些第三方扩展库是没有做好的,例如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(这个方法给力!)