我们正在SELinux环境中测试我们的应用程序。现在,我们收到以下错误:
dlopen failed to load libFoo.so -libFoo.so: cannot restore segment prot after reloc: Permission denied
据我对my searches的了解,这与共享库中
.text
部分的重定位有关。据我所知,我们已经在所有共享库中使用-fPIC
了。尽管可能有一些静态库也链接到那些共享库中。我如何找出导致此错误弹出的重定位/符号?我应该在共享库的
nm
或objdump -rR
输出中寻找什么?还是我在寻找错误的信息,而问题出在共享库中产生的重定位之外的其他地方?
最佳答案
我发现了这个:http://akkadia.org/drepper/textrelocs.html,基本上可以归结为一个建议,使用eu-findtextrel
查看存在哪些文本重定位。然后使用-fPIC
重新编译受影响的库即可解决此问题。
关于c++ - SELinux:重定位后无法恢复片段保护:权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19223963/