实证成功。
【依赖】
安装 httpd :
参考:https://amon.org/apr
参考:https://amon.org/libzip
参考:https://amon.org/apache
安装 re2c :
安装 oniguruma :
安装 iconv :
安装 gd :
【安装】
参考:https://www.php.net/git.php
git clone https://github.com/php/php-src.git && cd php-src && git checkout PHP-7.4 && ./buildconf ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --disable-debug --with-curl --with-iconv --with-zlib --enable-bcmath --enable-ftp --enable-sockets --enable-mbstring --enable-mbregex --enable-soap --with-xsl --with-openssl --enable-opcache --with-mysqli --with-mysql-sock --with-pdo-mysql --enable-mysqlnd --disable-fileinfo --enable-gd --with-webp --with-jpeg --with-xpm --with-freetype --enable-gd-jis-conv --with-libzip=/usr/local/lib64 --enable-zip --with-iconv-dir=/usr/local/lib --with-readline --with-apxs2=/usr/local/apache2/bin/apxs LDFLAGS="-L/usr/lib -lz" make ZEND_EXTRA_LIBS='-liconv' make install
查看版本:
php -v
输出:
PHP 7.4.0-dev (cli) (built: Apr 13 2019 10:47:31) ( ZTS ) Copyright (c) The PHP Group Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
重启Apache:
service httpd stop service httpd start
Apache正常启动。
查看是否正常加载:
/usr/local/php/bin/php -m | grep gd
输出:
gd
查看 phpinfo :
gd
GD Support enabled
GD headers Version 2.2.5
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.5.13
WBMP Support enabled
XPM Support enabled
libXpm Version
XBM Support enabled
Directive Local Value Master Value
gd.jpeg_ignore_warning 1 1
【排错】
报错:GD build test failed.
configure时 报错:GD build test failed. 那么yum安装,然后错误消失。。
报错:gd.o: undefined reference to symbol ‘XpmLibraryVersion’
然鹅make时GD库问题不通过,
/usr/bin/ld: ext/gd/.libs/gd.o: undefined reference to symbol 'XpmLibraryVersion' /usr/lib64/libXpm.so.4: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [sapi/cli/php] Error 1
已验证在编译PHP时先不安装gd而在PHP编译成功后以模块方式安装是不可行的。证明 gd 最好是随着 PHP 一起编译成功。
实证通过rpm方式安装gd库,完美地解决这个问题。
报错:-bash: php: command not found
php -v 时报错。
参考:https://www.cnblogs.com/iceman-/p/7833707.html
export PATH=$PATH:/usr/local/php/bin
【配置】
PHP模块一览及简要说明
参考:https://amon.org/php-modules
PHP配置参数
参考:https://amon.org/php-configure
`configure' configures PHP 7.4.0-dev to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/php] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] Optional Features and Packages: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-libdir=NAME Look for libraries in .../NAME rather than .../lib --disable-rpath Disable passing additional runtime library search paths --enable-re2c-cgoto Enable -g flag to re2c to use computed goto gcc extension --disable-gcc-global-regs whether to enable GCC global register variables SAPI modules: --with-apxs2[=FILE] Build shared Apache 2.0 Handler module. FILE is the optional pathname to the Apache apxs tool [apxs] --disable-cli Disable building CLI version of PHP (this forces --without-pear) --enable-embed[=TYPE] EXPERIMENTAL: Enable building of embedded SAPI library TYPE is either 'shared' or 'static'. [TYPE=shared] --enable-fpm Enable building of the fpm SAPI executable --with-fpm-user[=USER] Set the user for php-fpm to run as. (default: nobody) --with-fpm-group[=GRP] Set the group for php-fpm to run as. For a system user, this should usually be set to match the fpm username (default: nobody) --with-fpm-systemd Activate systemd integration --with-fpm-acl Use POSIX Access Control Lists --with-litespeed Build PHP as litespeed module --enable-phpdbg Build phpdbg --enable-phpdbg-webhelper Build phpdbg web SAPI support --enable-phpdbg-debug Build phpdbg in debug mode --enable-phpdbg-readline Enable readline support in phpdbg (depends on static ext/readline) --disable-cgi Disable building CGI version of PHP --with-valgrind=DIR Enable valgrind support General settings: --enable-gcov Enable GCOV code coverage (requires LTP) - FOR DEVELOPERS ONLY!! --enable-debug Compile with debugging symbols --enable-rtld-now Use dlopen with RTLD_NOW instead of RTLD_LAZY --with-layout=TYPE Set how installed files will be laid out. Type can be either PHP or GNU [PHP] --with-config-file-path=PATH Set the path in which to look for php.ini [PREFIX/lib] --with-config-file-scan-dir=PATH Set the path where to scan for configuration files --enable-sigchild Enable PHP's own SIGCHLD handler --enable-libgcc Enable explicitly linking against libgcc --disable-short-tags Disable the short-form <? start tag by default --enable-dmalloc Enable dmalloc --disable-ipv6 Disable IPv6 support --enable-dtrace Enable DTrace support --enable-fd-setsize Set size of descriptor sets Extensions: --with-EXTENSION=shared[,PATH] NOTE: Not all extensions can be build as 'shared'. Example: --with-foobar=shared,/usr/local/foobar/ o Builds the foobar extension as shared extension. o foobar package install prefix is /usr/local/foobar/ --disable-all Disable all extensions which are enabled by default --disable-libxml Disable LIBXML support --with-libxml-dir[=DIR] LIBXML: libxml2 install prefix --with-openssl Include OpenSSL support (requires OpenSSL >= 1.0.1) --with-kerberos[=DIR] OPENSSL: Include Kerberos support --with-system-ciphers OPENSSL: Use system default cipher list instead of hardcoded value --with-external-pcre Use external library for PCRE support --with-pcre-jit Enable PCRE JIT functionality --with-pcre-valgrind=DIR Enable PCRE valgrind support. Developers only! --without-sqlite3[=DIR] Do not include SQLite3 support. DIR is the prefix to SQLite3 installation directory. --with-zlib Include ZLIB support (requires zlib >= 1.2.0.4) --enable-bcmath Enable bc style precision math functions --with-bz2[=DIR] Include BZip2 support --enable-calendar Enable support for calendar conversion --disable-ctype Disable ctype functions --with-curl Include cURL support --enable-dba Build DBA with bundled modules. To build shared DBA extension use --enable-dba=shared --with-qdbm[=DIR] DBA: QDBM support --with-gdbm[=DIR] DBA: GDBM support --with-ndbm[=DIR] DBA: NDBM support --with-db4[=DIR] DBA: Oracle Berkeley DB 4.x or 5.x support --with-db3[=DIR] DBA: Oracle Berkeley DB 3.x support --with-db2[=DIR] DBA: Oracle Berkeley DB 2.x support --with-db1[=DIR] DBA: Oracle Berkeley DB 1.x support/emulation --with-dbm[=DIR] DBA: DBM support --with-tcadb[=DIR] DBA: Tokyo Cabinet abstract DB support --with-lmdb[=DIR] DBA: Lightning memory-mapped database support --without-cdb[=DIR] DBA: CDB support (bundled) --disable-inifile DBA: INI support (bundled) --disable-flatfile DBA: FlatFile support (bundled) --disable-dom Disable DOM support --with-libxml-dir[=DIR] DOM: libxml2 install prefix --with-enchant[=DIR] Include enchant support. GNU Aspell version 1.1.3 or higher required. --enable-exif Enable EXIF (metadata from images) support --with-ffi Include FFI support --disable-fileinfo Disable fileinfo support --disable-filter Disable input filter support --enable-ftp Enable FTP support --with-openssl-dir[=DIR] FTP: openssl install prefix --enable-gd Include GD support --with-external-gd Use external libgd --with-webp GD: Enable WEBP support --with-jpeg GD: Enable JPEG support --with-xpm GD: Enable XPM support --with-freetype GD: Enable FreeType 2 support --enable-gd-jis-conv GD: Enable JIS-mapped Japanese font support --with-gettext[=DIR] Include GNU gettext support --with-gmp[=DIR] Include GNU MP support --with-mhash[=DIR] Include mhash support --without-iconv[=DIR] Exclude iconv support --with-imap[=DIR] Include IMAP support. DIR is the c-client install prefix --with-kerberos[=DIR] IMAP: Include Kerberos support. DIR is the Kerberos install prefix --with-imap-ssl[=DIR] IMAP: Include SSL support. DIR is the OpenSSL install prefix --with-interbase[=DIR] Include Firebird support. DIR is the Firebird base install directory [/opt/firebird] --enable-intl Enable internationalization support --disable-json Disable JavaScript Object Serialization support --with-ldap[=DIR] Include LDAP support --with-ldap-sasl[=DIR] LDAP: Include Cyrus SASL support --enable-mbstring Enable multibyte string support --disable-mbregex MBSTRING: Disable multibyte regex support --with-mysqli[=FILE] Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed as FILE, the MySQL native driver will be used --with-mysql-sock[=SOCKPATH] MySQLi/PDO_MYSQL: Location of the MySQL unix socket pointer. If unspecified, the default locations are searched --with-oci8[=DIR] Include Oracle Database OCI8 support. DIR defaults to $ORACLE_HOME. Use --with-oci8=instantclient,/path/to/instant/client/lib to use an Oracle Instant Client installation --with-odbcver[=HEX] Force support for the passed ODBC version. A hex number is expected, default 0x0350. Use the special value of 0 to prevent an explicit ODBCVER to be defined. --with-adabas[=DIR] Include Adabas D support [/usr/local] --with-sapdb[=DIR] Include SAP DB support [/usr/local] --with-solid[=DIR] Include Solid support [/usr/local/solid] --with-ibm-db2[=DIR] Include IBM DB2 support [/home/db2inst1/sqllib] --with-empress[=DIR] Include Empress support $EMPRESSPATH (Empress Version >= 8.60 required) --with-empress-bcs[=DIR] Include Empress Local Access support $EMPRESSPATH (Empress Version >= 8.60 required) --with-custom-odbc[=DIR] Include user defined ODBC support. DIR is ODBC install base directory [/usr/local]. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in your include dirs. f.e. you should define following for Sybase SQL Anywhere 5.5.00 on QNX, prior to running this configure script: CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc" --with-iodbc[=DIR] Include iODBC support [/usr/local] --with-esoob[=DIR] Include Easysoft OOB support [/usr/local/easysoft/oob/client] --with-unixODBC[=DIR] Include unixODBC support [/usr/local] --with-dbmaker[=DIR] Include DBMaker support --disable-opcache Disable Zend OPcache support --disable-huge-code-pages Disable copying PHP CODE pages into HUGE PAGES --enable-pcntl Enable pcntl support (CLI/CGI only) --disable-pdo Disable PHP Data Objects support --with-pdo-dblib[=DIR] PDO: DBLIB-DB support. DIR is the FreeTDS home directory --with-pdo-firebird[=DIR] PDO: Firebird support. DIR is the Firebird base install directory [/opt/firebird] --with-pdo-mysql[=DIR] PDO: MySQL support. DIR is the MySQL base directory. If no value or mysqlnd is passed as DIR, the MySQL native driver will be used --with-zlib-dir[=DIR] PDO_MySQL: Set the path to libz install prefix --with-pdo-oci[=DIR] PDO: Oracle OCI support. DIR defaults to $ORACLE_HOME. Use --with-pdo-oci=instantclient,/path/to/instant/client/lib for an Oracle Instant Client installation. --with-pdo-odbc=flavour,dir PDO: Support for 'flavour' ODBC driver. The include and lib dirs are looked for under 'dir'. The 'flavour' can be one of: ibm-db2, iODBC, unixODBC, generic. If ',dir' part is omitted, default for the flavour you have selected will be used. e.g.: --with-pdo-odbc=unixODBC will check for unixODBC under /usr/local. You may attempt to use an otherwise unsupported driver using the 'generic' flavour. The syntax for generic ODBC support is: --with-pdo-odbc=generic,dir,libname,ldflags,cflags. When built as 'shared' the extension filename is always pdo_odbc.so --with-pdo-pgsql[=DIR] PDO: PostgreSQL support. DIR is the PostgreSQL base install directory or the path to pg_config --without-pdo-sqlite[=DIR] PDO: sqlite 3 support. DIR is the sqlite base install directory [BUNDLED] --with-pgsql[=DIR] Include PostgreSQL support. DIR is the PostgreSQL base install directory or the path to pg_config --disable-phar Disable phar support --disable-posix Disable POSIX-like functions --with-pspell[=DIR] Include PSPELL support. GNU Aspell version 0.50.0 or higher required --with-libedit Include libedit readline replacement (CLI/CGI only) --with-readline[=DIR] Include readline support (CLI/CGI only) --with-recode[=DIR] Include recode support --disable-session Disable session support --with-mm[=DIR] SESSION: Include mm support for session storage --enable-shmop Enable shmop support --disable-simplexml Disable SimpleXML support --with-libxml-dir=DIR SimpleXML: libxml2 install prefix --with-snmp[=DIR] Include SNMP support --with-openssl-dir[=DIR] SNMP: openssl install prefix --enable-soap Enable SOAP support --with-libxml-dir=DIR SOAP: libxml2 install prefix --enable-sockets Enable sockets support --with-sodium[=DIR] Include sodium support --with-password-argon2[=DIR] Include Argon2 support in password_*. DIR is the Argon2 shared library path --enable-sysvmsg Enable sysvmsg support --enable-sysvsem Enable System V semaphore support --enable-sysvshm Enable the System V shared memory support --with-tidy[=DIR] Include TIDY support --disable-tokenizer Disable tokenizer support --disable-xml Disable XML support --with-libxml-dir=DIR XML: libxml2 install prefix --with-libexpat-dir=DIR XML: libexpat install prefix (deprecated) --disable-xmlreader Disable XMLReader support --with-libxml-dir=DIR XMLReader: libxml2 install prefix --with-xmlrpc[=DIR] Include XMLRPC-EPI support --with-libxml-dir=DIR XMLRPC-EPI: libxml2 install prefix --with-libexpat-dir=DIR XMLRPC-EPI: libexpat dir for XMLRPC-EPI (deprecated) --with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI --disable-xmlwriter Disable XMLWriter support --with-libxml-dir=DIR XMLWriter: libxml2 install prefix --with-xsl[=DIR] Include XSL support. DIR is the libxslt base install directory (libxslt >= 1.1.0 required) --enable-zend-test Enable zend-test extension --enable-zip Include Zip read/write support --with-libzip[=DIR] ZIP: use libzip --enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly when required by other extensions --disable-mysqlnd-compression-support Disable support for the MySQL compressed protocol in mysqlnd --with-zlib-dir[=DIR] mysqlnd: Set the path to libz install prefix PEAR: --with-pear[=DIR] Install PEAR in DIR [PREFIX/lib/php] Zend: --enable-maintainer-zts Enable thread safety - for code maintainers only!! --disable-inline-optimization If building zend_execute.lo fails, try this switch --disable-zend-signals whether to enable zend signal handling TSRM: --with-tsrm-pth[=pth-config] Use GNU Pth --with-tsrm-st Use SGI's State Threads --with-tsrm-pthreads Use POSIX threads (default) Libtool: --enable-shared=PKGS Build shared libraries default=yes --enable-static=PKGS Build static libraries default=yes --enable-fast-install=PKGS Optimize for fast installation default=yes --with-gnu-ld Assume the C compiler uses GNU ld default=no --disable-libtool-lock Avoid locking (might break parallel builds) --with-pic Try to use only PIC/non-PIC objects default=use both --with-tags=TAGS Include additional configurations automatic
【参考】
参考:https://www.iteye.com/topic/1132681
参考:https://download.dwd.de/pub/afd/stable/ac-tools/xpm.m4
参考:https://software.sandia.gov/trac/dakota/attachment/ticket/4005/config.log
参考:https://stackoverflow.com/questions/19895312/php-make-fails-with-error-undefined-symbols-xpmlibraryversion
参考:https://www.twblogs.net/a/5b8d9a762b717718833f4ad0
参考:http://www.zhongruitech.com/241256621.html
参考:https://segmentfault.com/a/1190000002462705
参考:https://www.cnblogs.com/Hocker/p/8269506.html
参考:https://stackoverflow.com/questions/19901934/libpthread-so-0-error-adding-symbols-dso-missing-from-command-line
参考:http://tbfungeek.github.io/2016/03/05/Opencv-%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84%E9%94%99%E8%AF%AF/
参考:https://blog.csdn.net/x356982611/article/details/79597987
参考:https://stackoverflow.com/questions/24096807/dso-missing-from-command-line
参考:https://forums.gentoo.org/viewtopic-t-1083336-start-0.html
参考:http://landcareweb.com/questions/1734/qi-guai-de-lian-jie-cuo-wu-ming-ling-xing-zhong-que-shao-dso