具体的问题,是“cannot restore segment prot after reloc”
在运用CLI(the command line interface)调用XST综合的过程中出现诸如:
error while loading shared libraries cannot restore segment prot after reloc ***** Permission denied
我的编译环境出现的问题是:
error while loading shared libraries cannot restore segment prot after reloc: opt/Xilinx_9.1/ISE/bin/lin/libSTL.so Permission denied
这样的问题。
在linux下刚开始搭建起开发环境时,大多数人会考虑到安装开发使用的开发软件、设置完环境变量以及后续的操作,只有少数人会想到SELinux 的问题。
此类问题可以参考
************************************************************************************************
Topic:
Some Linux distributions with SELinux enabled may prevent IDL from running under the default security context. This TechTip is a workaround for CR#41937
Discussion:
Newer Linux distributions have enabled new kernel security extensions from the SELinux project at the NSA. These extensions allow finer-grained control over system security. However, SELinux also changes some default system behaviors, such as shared library loading, that can be problematic to third party programs.
If you receive the error message "cannot restore segment prot after reloc: Permission denied" when launching IDL, then your SELinux configuration is preventing IDL from launching.
Solution:
To rectify this issue, you can either:
1.
Change the default security context for IDL by issuing the command:
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
2.
Disabling SELinux altogether by setting the line
SELINUX=disabled
************************************************************************************************
开始时,我尝试着用上面的第一个办法去解决,
chcon -t texrel_shlib_t /opt/Xilinx_9.1/ISE/bin/lin/libSTL.so
这个问题解决了,但一条命令过后,又出来一个共享库问题。
干脆,就把SElinux由enforcing状态改成 disabled,然后,问题就解决了,可以正常编译了。
SELINUX=disabled
修改这个选项,CentOS 5.2的配置文件在在etc/selinux/ 下的“config”文件中,默认配置是enforcing。
改成disable就好了
另外,在“etc/sysconfig”目录下,也有config文件的快捷方式。
在解决过程中,参考了博文:https://blog.chinaunix.net/u/22583/showart_425684.html