我们正在SELinux环境中测试我们的应用程序。现在,我们收到以下错误:

dlopen failed to load libFoo.so -libFoo.so: cannot restore segment prot after reloc: Permission denied

据我对my searches的了解,这与共享库中.text部分的重定位有关。据我所知,我们已经在所有共享库中使用-fPIC了。尽管可能有一些静态库也链接到那些共享库中。

我如何找出导致此错误弹出的重定位/符号?我应该在共享库的nmobjdump -rR输出中寻找什么?

还是我在寻找错误的信息,而问题出在共享库中产生的重定位之外的其他地方?

最佳答案

我发现了这个:http://akkadia.org/drepper/textrelocs.html,基本上可以归结为一个建议,使用eu-findtextrel查看存在哪些文本重定位。然后使用-fPIC重新编译受影响的库即可解决此问题。

关于c++ - SELinux:重定位后无法恢复片段保护:权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19223963/

10-11 15:37