Linux PHP编译 make时出现错误libpthread.so.0: error adding symbols: DSO missing from command line的解决方案

          Linux PHP编译make时出现错误libpthread.so.0: error adding symbols:                         DSO missing from command line的解决方案

不得不说,编译难度确实比较大,这个问题耗费了我接近两个小时,我现在查找了安装时的日志记录,发现了不少同样的错误,现将原因以及解决方案写出来。(日志记录3w6多行,可想而知多么的痛苦)。

configure:69932: cc -o conftest -I/usr/include -g -O2 -fvisibility=hidden -pthread  -D_REENTRANT -L/usr/lib  -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 conftest.c -lcrypt -lrt -lrt -lm -ldl  -lpthread -lgcc -lxml2 -lssl -lcrypto -lsqlite3 -lz -lcurl -lxml2 -lssl -lcrypto -lz -ljpeg -lfreetype -lonig -lsqlite3 -lxml2 -lxml2 -lcrypt >&5
/usr/bin/ld: /tmp/ccZcp7co.o: undefined reference to symbol '__res_nsearch@@GLIBC_2.2.5'
/usr/lib64/libresolv.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我想看的人一定眼睛花了,没错,谁看谁眼花。__res_nsearch这个是一个动态链接库,glibc_2.2.5,这个是glibc的一个库,glibc是一个总的c的运行库,@表示在glibc库内,倒数第二行是不能通过命令添加 libresolv.so.2这个文件的链接到__res_nsearch库,

最后一行给了一个退出的代码。第二第三行的内容你可以在Makefile这个文件内找到。我说的这个Makefile是PHP的源安装目录下的文件。我的路径是 /usr/local/src/php-7.4.6,执行过预安装 ./configure 命令后会出现该文件---Makefile。

第二第三行的内容是在Makefile文件的EXTRA_LIBS=  这一行下,在这一行末尾添加  -lresolv。问题解决了,世界清静了。

在其后想添加libpng这个图片解析功能,又遇到了类似的错误,仍然在EXTRA_LIBS= 这一行下添加 -lpng。也不报错了。

总结:修改makefile文件是关键,找到扩展libs也就是EXTRA_LIBS= 这一行,在末尾添加 -l 动态链接库名,库名就是'__res_nsearch@@GLIBC_2.2.5 第二个_前面的那一部分。

另外说一下,还需要给定环境变量。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libgd/lib:/usr/local/libpng/include:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

export PNG_LIBS=/usr/local/libpng/include

三个变量命令在编译前执行一下。

编辑 /etc/ld.so.conf 这个文件,将 /usr/local/lib     /usr/lib64/ 这两个路径放在后面。基本不会在出什么问题了。类似的报错都可以这么处理。(也就是所有的动态链接库无法找到的问题,如果,环境变量三个命令执行了还不行,那就手动添加吧)

贴一下我的 EXTRA_LIBS

Linux PHP编译 make时出现错误libpthread.so.0: error adding symbols: DSO missing from command line的解决方案_第1张图片

你可能感兴趣的:(LNMP,linux,python,java,centos,mysql)