在Java 7上使用JNI运行java 5/6会给出堆栈警告警告

Sim*_*fer 6 java java-native-interface guard

使用1.5(或1.6和1.5可比性模式)构建的java程序会发出以下警告:

Java HotSpot(TM)服务器VM警告:您已加载库mynativelib.so,它可能已禁用堆栈保护.
VM将尝试立即修复堆栈防护.强烈建议您使用'execstack -c'修复库,或将其与'-z noexecstack'链接.

它似乎没有引起问题,但显然对我们的客户来说有点可怕.我不认为在7中构建java位会解决这个问题,但我很难看到文档说明如何为Java 7构建JNI库,这就是警告暗示我应该做的不同.

那么我应该在哪里看?

Dat*_*ata 5

在这里找到答案 禁用堆栈保护警告(ACF9,JVM 1.7,Linux)

他说

这是Linux上Java 7的HotSpot编译器的一个功能,它试图阻止用C编写并链接到Java(所谓的Java Native Interface - JNI)的代码,如果它被严重或恶意地写入,则暂停整个VM.