动态链接库加载出错:cannot restore segment prot after reloc: Permission denied
作为菜鸟,几次想学LINUX的动态链接库,在网上也找了不少资源,却每次都被同一个问题挡在门外.就是在我执行程序时,总是遇到加载so文件时的错误.我按照网上说的,又是改LD_LIBRARY_PATH又是改ld.so.conf配置文件,结果都无济于事.后来找人一问,才知道原来不是它的错误,而是 Linux 内核中提供的强制访问控制 (MAC)系统SELINUX的原因.
在百度上找到了一篇文章,很好地解决了我的问题.先摘下来:
2009-02-03 22:55
环境:Linux localhost.localdomain 2.6.18-92.el5PAE
apache2+php4整合完毕后启动apache 时报错 root@localhost fgn]# /usr/local/apache/bin/apachectl restart httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp4.so into server: /usr/local/apache/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied 解决: 这是因为SELINUX的问题,需要关闭SELINX,执行:/usr/sbin/setenforce 0 引用: When packaging an application on RHEL or CentOS, you may receive the following error: cannot restore segment prot after reloc: Permission denied . To Temporarily disable enforcement on a running system /usr/sbin/setenforce 0 To permanently disable enforcement during a system startup change "enforcing" to "disabled" in ''/etc/selinux/config'' and reboot. . By default, CentOS 5 has the SE Linux feature set to "enforcing". We are looking into ways to removing these steps. |