首页 > 编程语言 >编译php7.4和php8.0编译安装,pkg-config详情

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

时间:2022-12-29 09:11:41浏览次数:71  
标签:lib -- CONFIG php7.4 php8.0 编译 usr local PKG

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(这个方法给力!)

标签:lib,--,CONFIG,php7.4,php8.0,编译,usr,local,PKG
From: https://www.cnblogs.com/zx-admin/p/16996425.html

相关文章

  • JENKINS调用打包工具,编译ISM文件时系统出现多个MSIEXEC.EXE进程的解决方式
    最近一直在搞INSTALLSHIELD打包工具,今天遇到的问题,我的编译脚本中有使用INSTALLSHIELD的编译ISM文件的命令:iscmdbld.exe-pD:\Jenkins-workdirectory\Tools\Setupxxxx......
  • Win 10 x64 Visual Studio 2019 编译 Detours 4.0.1
    Win10x64VisualStudio2019编译Detours4.0.1 十一年前,研究项目里用到的Detours已经更新到版本4.0.1,支持64位HOOK,从Github上下载下来编译看一下。GitHub下载......
  • Ubuntu 22.04 搭建编译Android源码环境
    环境准备操作系统编译Android源码需要一个区分文件大小写的系统环境,一般使用Ubuntu,可以采用单独安装Ubuntu、虚拟机等形式。这里使用VMware虚拟机的形式,具体安装过程省略......
  • 微软工程师展望 Rust 2023:重写编译器、解决管理问题
    微软工程师展望Rust2023:重写编译器、解决管理问题来源:OSCHINA编辑: 局2022-12-2208:30:00 6NickCameron是就职于微软负责Rust开发的首席工程师,......
  • QT编译报错,LNK2001:无法解析的外部符号
    今天按照以前写过的文件依葫芦画瓢新建了一个类,结果报了3行LNK2001的错误,如下图:QT比较恶心的一个地方就是这种错误不能直接看出来是哪出的问题,而且双击也跳......
  • 华为方舟编译器正式开源,采用自主平台托管
    华为方舟编译器正式开源,采用自主平台托管Kotlin开发者社区  01—  概述 “ 方舟编译器概述:方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的......
  • 推荐 10 款 C++ 在线编译器
    1CodingGroundUrl:​https://www.tutorialspoint.com/compile_cpp_online.php​​CodingGround是Tutorialspoint(很强大的免费教程网站)的一个编码平台。它提供的编译器支......
  • IntelliJ IDEA 编译方式介绍及查看内存占用
    编译方式介绍相比较于Eclipse的实时自动编译,IntelliJIDEA的编译更加手动化,虽然IntelliJIDEA也支持通过设置开启实时编译,但是不建议,因为太占资源了。IntelliJIDEA编......
  • 交叉编译esp8089
    交叉编译esp8089编译环境:硬件:全志R528ubuntu:Linuxubuntu4.15.0-194-generic#205-UbuntuSMPFriSep1619:49:27UTC2022x86_64x86_64x86_64GNU/Lin......
  • 如何写一个深度学习编译器
    编译器本质上是一种提高开发效率的工具,将高级语言转换为低级语言(通常是二进制机器码),使得程序员不需要徒手写二进制。转换过程中,首要任务是保证正确性,同时需要进行优化以提......