如何为定制的tcl intepreter制作类似starpack的二进制文件?

如何为定制的tcl intepreter制作类似starpack的二进制文件?,tcl,starkit,Tcl,Starkit,我正在尝试制作一个类似于starpack的单二进制文件,其中包含了一堆tcl脚本。我查看了ActiveTcl中的,似乎您必须使用它们的(例如/usr/local/ActiveTcl/bin/base-tk8.5-thread-linux-ix86)。但是,我已经将解释器构建到自己的二进制文件中。如何使我的二进制文件成为basekit?我首先要问的是,是否真的有必要拥有自己的Tcl版本。如果您可以对代码进行结构化,使您的自定义片段是可加载的扩展(与存根库正确链接),那么您可以将其与标准工具包分发版

我正在尝试制作一个类似于starpack的单二进制文件,其中包含了一堆tcl脚本。我查看了ActiveTcl中的,似乎您必须使用它们的(例如/usr/local/ActiveTcl/bin/base-tk8.5-thread-linux-ix86)。但是,我已经将解释器构建到自己的二进制文件中。如何使我的二进制文件成为basekit?

我首先要问的是,是否真的有必要拥有自己的Tcl版本。如果您可以对代码进行结构化,使您的自定义片段是可加载的扩展(与存根库正确链接),那么您可以将其与标准工具包分发版一起使用


但是,如果您的代码确实需要构建为主可执行文件,那么您可以做您想要做的事情。您可能希望从一开始,这是维护和合理开放的。你必须做一些工作,使东西正确组装;特别是,确保您的代码是针对它需要的任何外部库(除了C库和其他可以合理地假设在目标平台上存在的东西)使用静态链接构建的,因为基于工具包的Tcl发行版的运行时链接环境非常奇怪。构建一个存根扩展(您可以将其存储在工具包中)要简单得多。首先,我想问一下,是否真的有必要构建自己的Tcl。如果您可以对代码进行结构化,使您的自定义片段是可加载的扩展(与存根库正确链接),那么您可以将其与标准工具包分发版一起使用


但是,如果您的代码确实需要构建为主可执行文件,那么您可以做您想要做的事情。您可能希望从一开始,这是维护和合理开放的。你必须做一些工作,使东西正确组装;特别是,确保您的代码是针对它需要的任何外部库(除了C库和其他可以合理地假设在目标平台上存在的东西)使用静态链接构建的,因为基于工具包的Tcl发行版的运行时链接环境非常奇怪。构建为存根扩展(您只需将其存储在工具包包中)要简单得多。

谢谢您的回答!你能澄清一下什么是“作为存根扩展构建”吗?此外,如果我想将所有tcl文件/代码打包成一个文件(工具包?),并使用二进制文件加载,那么我需要对二进制文件(包括解释器)进行哪些更改。@CyberSnoopy:the表示您需要的大部分内容。对于其他人来说,这个话题是一个开始(当然)。加上你可以在这里搜索;我相信有一些问题,所以答案涵盖了基本知识。谢谢你的回答!你能澄清一下什么是“作为存根扩展构建”吗?此外,如果我想将所有tcl文件/代码打包成一个文件(工具包?),并使用二进制文件加载,那么我需要对二进制文件(包括解释器)进行哪些更改。@CyberSnoopy:the表示您需要的大部分内容。对于其他人来说,这个话题是一个开始(当然)。加上你可以在这里搜索;我相信会有一些问题,因此答案涵盖了基本知识。