动态链接库加载出错:cannot restore segment prot after reloc: Permission denied

    作为菜鸟,几次想学LINUX的动态链接库,在网上也找了不少资源,却每次都被同一个问题挡在门外.就是在我执行程序时,总是遇到加载so文件时的错误.我按照网上说的,又是改LD_LIBRARY_PATH又是改ld.so.conf配置文件,结果都无济于事.后来找人一问,才知道原来不是它的错误,而是 Linux 内核中提供的强制访问控制 (MAC)系统SELINUX的原因.

    在百度上找到了一篇文章,很好地解决了我的问题.先摘下来:

cannot restore segment prot after reloc: Permission denied
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
This is likely due the the SE Linux setting being set to "enforcing"
.
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.

posted @ 2009-02-18 17:18  黄鹏  阅读(9451)  评论(0编辑  收藏  举报