在我的c ++程序中,我使用了Tcl库并链接了libtcl8.5.so,但是目标主机没有tcl8.5,所以我复制了包含init的libtcl8.5.so和tcl8.5目录。 tcl那里,并将environmet变量TCLLIBPATH设置为path / to / copied / tcl8.5,但是当我的程序调用Tcl_Init时,它失败并说“package not known”。
似乎复制的tcl8.5 /无法正确初始化。 我该如何解决这个问题?
答案 0 :(得分:2)
如果更改脚本库目录的位置(在您的情况下为tcl8.5/
),则需要告知Tcl的共享库部分。您可以使用TCL_LIBRARY
环境变量执行此操作,如果设置该变量,则应包含绝对路径,该路径是该目录的位置(从技术上讲,该目录包含init.tcl
)。
在Tcl的正常安装中,该目录的正确位置直接烘焙到共享库中,但是当您移动事物时(或当您运行Tcl的make test
时),环境变量允许您覆盖。
您可能希望研究其他包装机制; tcl标签上已经有一些关于这个问题的问题(但是通常最喜欢的 - 一个starkit - 可能不适合你的情况,因为程序主要是C ++)。