如何构建自定义 TclDevKit 前缀文件?

发布于 2024-10-07 22:06:25 字数 939 浏览 6 评论 0原文

我想使用自定义的TCL解释器作为TclDevKit的tclapp的前缀文件。

我有一个从以下文件构建的 TCL 解释器:

// file main.cpp
#include <tcl.h>

int
Tcl_AppInit( Tcl_Interp* interp )                    
{
    if ( Tcl_Init( interp ) == TCL_ERROR ) {         
        return TCL_ERROR;                            
    }               
    if ( Tcl_Eval( interp, "puts \"this is my interpreter\"" ) == TCL_ERROR ) {
        return TCL_ERROR;                        
    }
    return TCL_OK;
}

int
main( int argc, char** argv )                        
{
    Tcl_Main( argc, argv, &Tcl_AppInit );
    return 0;
}

我使用以下命令构建 main.cpp

 g++ -Wl,-R/usr/local/lib -L/usr/local/lib -ltcl main.cpp -o myinterp

并获得一个解释器 myinterp

我应该如何修改 main.cpp 和上面的 g++ 命令才能将 myinterp 作为 -prefix 选项传递TclDevKit 的 tclapp 的?

I want to use a custom TCL interpreter as the prefix file of TclDevKit's tclapp.

I have a TCL interpreter built from the following file:

// file main.cpp
#include <tcl.h>

int
Tcl_AppInit( Tcl_Interp* interp )                    
{
    if ( Tcl_Init( interp ) == TCL_ERROR ) {         
        return TCL_ERROR;                            
    }               
    if ( Tcl_Eval( interp, "puts \"this is my interpreter\"" ) == TCL_ERROR ) {
        return TCL_ERROR;                        
    }
    return TCL_OK;
}

int
main( int argc, char** argv )                        
{
    Tcl_Main( argc, argv, &Tcl_AppInit );
    return 0;
}

I build main.cpp with the following command:

 g++ -Wl,-R/usr/local/lib -L/usr/local/lib -ltcl main.cpp -o myinterp

and get an interpreter myinterp.

How should I modify main.cpp and the g++ command above to be able to pass myinterp as -prefix option of TclDevKit's tclapp?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅暮の光 2024-10-14 22:06:25

这并不容易。前缀文件不是传统的可执行文件,而是完整打包的 Tcl 解释器包括一个虚拟文件系统,其中包含通常在外部文件中的所有额外位和片段(例如,某些机器上的编码、脚本、时区信息) ,其他资源(文本和二进制)。这一切都使用 sdx 工具打包为一个名为“tclkit”的实体,并且它还需要包含一堆自定义内容(例如保存的字节码文件加载程序包)。简而言之,这是一个相当复杂的构建。

为什么需要这个?你真的需要 C++ 吗?您能否重写您的代码,使其位于 Tcl 的 load 命令可以使用的共享库中?

This is not easy. The prefix files are not conventional executables, but rather full packaged Tcl interpreters including a virtual filesystem containing all the extra bits and pieces that are normally in external files (e.g., encodings, scripts, timezone info on some machines, other resources both textual and binary). This is all packaged up as an entity called a “tclkit” using the sdx tool, and it needs to include a bunch of custom things too (such as the saved-bytecode-file loader package). In short, it's quite a complex build.

Why do you need this? Do you really need C++? Can you rewrite your code so it is in a shared library that Tcl's load command can make available?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文