3

我已经使用 rpm 为 tcl 安装了 BLT,它看起来安装正确。

从内部希望我可以成功执行“package require BLT”但是,如果我尝试这样做:

blt::hierbox .h

我收到以下消息:

无法读取文件“hierbox.tcl”:没有这样的文件或目录

我已经查看/usr/lib64/blt2.4heirbox.tcl在那里并且似乎没有任何不寻常的权限。

我想那pkgIndex.tcl一定没问题,否则 package require 命令会失败。

有趣的是,来自 BLT 的图形小部件似乎工作正常:blt::graph .g工作正常。

我对 tcl 了解不多(我只是想让一些遗留软件工作)所以任何帮助将不胜感激。

更新我已经从源代码构建了 BLT(这也需要从源代码构建 tcl 和 tk 8.4),这似乎有效。但只有当我使用它附带的 bltwish 时。我看到其他人抱怨的 BLT 的 rpm 版本似乎没有 bltwish exe。也许这是问题的一部分。

无论如何,我现在可以解决它,所以除非其他人也在受苦,否则不要努力诊断我以前的问题。

4

1 回答 1

1

在我的 Debian 系统上,我同时使用 Tcl 8.6 和 8.5(前者为默认),我使用标准 debs 安装了 BLT2.4,如果我运行相同的代码,它会工作并创建hierbox对象。

$ wish
% package require BLT
2.4
% blt::hierbox .h
.h
%

BLT安装在/usr/lib/blt2.4目录中,包含pkgIndex.tcl文件和hierbox.tcl文件,所以看起来和你的情况一样(除了结果)。

我查看了该pkgIndex.tcl文件,它选择了要加载的二进制库(位于 中/usr/lib),并使用 Tclload命令加载它。包的声明是由共享对象完成的,所以如果package require BLT有效,它需要.so正确加载。

尝试查看该graph.tcl文件是否与hierbox.tcl.

我在 BTL 源代码中看到,脚本有一个--with-blt选项可以configure告诉您将 BLT 脚本放在哪里。我认为它/usr/lib/blt2.4在我的系统上,但也许在你的系统上已经改变了;然后,如果 rpm 错误,它可能会将graph.tcl文件安装在配置选项给出的正确位置,但是安装hierbox.tcl在错误的位置,因此它不再工作。

也试试其他小部件,看看相应的.tcl文件在哪里。

我不能说更多了,对不起:)

于 2012-10-30T21:27:05.747 回答