堆栈防护可能已禁用?

我正在尝试在库中运行第一个示例,您可以从这里找到它rootbeer

问题是,即使我遵循了他们的所有说明,当我尝试运行Jar时,我也会收到以下消息

root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# java -jar HelloWorldGPU.jar
OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.NullPointerException
        at org.trifort.rootbeer.runtime.Rootbeer.run(Rootbeer.java:104)
        at ScalarMult.test(ScalarMult.java:13)
        at Main.main(Main.java:17)

我不是Linux人,所以我不知道如何正确执行此命令。我也不明白他们所说的信息是什么意思,因为这是我第一次使用GPU编程。但我知道用错误的命令弄乱GPU将是一个问题。


答案 1

键入:检查您是否已经安装了执行堆栈。execstack --version

如果找不到命令,请键入:sudo apt-get install execstack -y --force-yes

类型,例如sudo execstack -c <file>sudo execstack -c /usr/lib/libcuda.so


答案 2

1:使用以下命令检查执行堆栈版本,以查找是否已安装的执行堆栈

execstack --version

2:如果未安装执行堆栈,则使用以下命令进行安装

sudo apt-get install execstack -y --force-yes

3:安装成功后执行以下命令

sudo execstack -c <filepath>

例如: sudo execstack -c /usr/lib/libjpcap.so