Common lisp 使用Clisp编译文件的问题

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或更新版

所以我在WindowsShell上的Ubuntu上使用了新的Bash,并安装了clisp包来处理CommonLisp。我在尝试
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


      “无法启用可执行堆栈”通过谷歌搜索会导致。也许这会有帮助。这不是答案,但要开始在Windows上玩clisp,您还可以安装一个。然后,无论你选择Ubuntu还是Windows版本,都要为自己准备一个IDE。我从一个很棒的、小的、免费的本地Windows应用程序开始。一旦我对Lisp更熟悉了,我就转而使用emacs+slime作为我的IDE,从此不再回头。因为它是用Lisp编写的,emacs很快就成为我最喜欢的编辑器,满足了我几乎所有的文本编辑需求。谢谢!虽然我不知道如何解决这个问题,但我会使用它。它有一个GitHub问题页面:Windows开发者反馈页面:“无法启用可执行堆栈”谷歌搜索结果。也许这会有帮助。这不是答案,但要开始在Windows上玩clisp,您还可以安装一个。然后,无论你选择Ubuntu还是Windows版本,都要为自己准备一个IDE。我从一个很棒的、小的、免费的本地Windows应用程序开始。一旦我对Lisp更熟悉了,我就转而使用emacs+slime作为我的IDE,从此不再回头。因为它是用Lisp编写的,emacs很快就成为我最喜欢的编辑器,满足了我几乎所有的文本编辑需求。谢谢!虽然我不知道如何解决这个问题,但我会使用它。它有GitHub问题页面:Windows开发者反馈页面:我按照建议删除了该标志,但得到了相同的错误,但使用了
      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我不知道,也许谷歌可以帮你