我正在使用 tcl 8.4 版本,我想使用 tcl Thread 包,但它不是 8.4 版本内置的,所以我尝试直接下载并使用该包。我下载了thread2.8.8包并制作了libthread2.8.8.so文件。然而pkgIndex.tcl文件中有一段代码部分是‘加载libthread2.8.8.so’代码,但8.4版本中不存在加载命令,导致错误。如何在 8.4 版本中加载共享库?
我已经搜索了在tcl版本8.4中加载共享库的方法,但我没有找到任何解决方案,所以我寻求帮助。
load
命令自8.0之前就已存在。
线程包很棘手。它要求加载到的 Tcl 构建是支持线程,以实现其大部分功能;这不是默认的构建配置,直到... 8.5 或 8.6?我忘记是哪一个了我记得人们最担心的是 Expect 包(即使现在也只喜欢在主线程中使用)。
官方来说,我现在不建议在 8.4 上做新的工作,并且已经有十多年没有做过了。
您没有提及错误消息是什么。这可能会指导您解决问题; Tcl 的错误消息通常都是这样。然而,来自
load
的错误有时很难解释(它们来自用于动态库加载的底层操作系统 API,并且具有明显不同的质量和实用性)。线程库在这方面不太可能是最差的,因为它具有简单的依赖关系。
我要提到的一件事是,如果线程库未构建为启用存根,则可能需要针对正确的 Tcl 版本(您正在加载的版本)构建它。它需要匹配的紧密程度取决于许多特定于平台的细节。存根机制的优点之一是它可以为您处理 Tcl 的内部语言版本配置文件。