Common lisp 使用Clisp编译文件的问题
所以我在WindowsShell上的Ubuntu上使用了新的Bash,并安装了clisp包来处理CommonLisp。我在尝试Common lisp 使用Clisp编译文件的问题,common-lisp,clisp,Common Lisp,Clisp,所以我在WindowsShell上的Ubuntu上使用了新的Bash,并安装了clisp包来处理CommonLisp。我在尝试clisp测试时遇到此错误。clisp: /usr/lib/clisp-2.49/base/lisp.run:加载共享库时出错:libavcall.so.0:无法根据共享对象的要求启用可执行堆栈:参数无效 这也是一个全新的安装。我查看了/usr/lib并找到了libavcall.so.0文件,但我不确定该如何处理它。如何解决此问题?此问题在libffcall2.0或更新版
clisp测试时遇到此错误。clisp
:
/usr/lib/clisp-2.49/base/lisp.run:加载共享库时出错:libavcall.so.0:无法根据共享对象的要求启用可执行堆栈:参数无效
这也是一个全新的安装。我查看了
/usr/lib
并找到了libavcall.so.0
文件,但我不确定该如何处理它。如何解决此问题?此问题在libffcall
2.0或更新版本中不再存在。它被修好了
如果您仍在使用libffcall
1.x:The(由user@cybevnm引用)解释了其中的大部分内容:
被标记为需要可执行堆栈(属性libavcall.so
的值为GNU_stack
),尽管它不需要可执行堆栈。发生这种情况是因为它是从汇编语言源代码编译的RWE
- 您可以通过命令删除此标志,例如
sudoexecstack-c/usr/lib/libavcall.so.0
- 此问题在
libffcall
2.0或更新版本中不再存在。它被修好了
如果您仍在使用libffcall
1.x:The(由user@cybevnm引用)解释了其中的大部分内容:
被标记为需要可执行堆栈(属性libavcall.so
的值为GNU_stack
),尽管它不需要可执行堆栈。发生这种情况是因为它是从汇编语言源代码编译的RWE
- 您可以通过命令删除此标志,例如
sudoexecstack-c/usr/lib/libavcall.so.0
libcallback.so.0
。因为是同一个错误,所以我认为如果我再次使用sudoexecstack-c/usr/lib/libcallback.so.0
,这个错误就会被修复。我一次又一次地收到这个新错误UNIX错误5(EIO):I/O错误,不可打印的错误消息
,直到我终止进程为止。@BensonChau我不确定,所以只要查询一下,很可能这些库确实需要可执行堆栈标志,您的方法是禁用可执行调用堆栈保护(适用于您的CL会话或系统范围)不是从二进制文件中删除这些标志…对,所以我通过将标志添加回二进制文件来逆转这些更改。你介意我问一下如何禁用CL会话的可执行调用堆栈保护吗?我真的不知道该怎么做。@BensonChau我不知道,也许谷歌可以帮你我将标志作为sugges删除ted,但是得到了相同的错误,但是使用了libcallback.so.0
。因为它是相同的错误,我认为如果我再次使用sudo execstack-c/usr/lib/libcallback.so.0
,它会被修复。我得到了这个新的错误UNIX错误5(EIO):I/O错误,无法打印的错误消息
一次又一次,直到我终止进程为止。@BensonChau我不确定,因此,很可能这些库确实需要可执行堆栈标志,您的方法是禁用可执行调用堆栈保护(对于CL会话或系统范围)而不是从二进制文件中删除这些标志…对,所以我通过将标志添加回二进制文件来逆转这些更改。你介意我问一下如何禁用CL会话的可执行调用堆栈保护吗?我真的不知道该怎么做。@BensonChau我不知道,也许谷歌可以帮你