创建包含多个文件(除了main.tcl)的kbskit
我正在尝试使用以下命令构建一个包含iwidgets和img包的kbskit:创建包含多个文件(除了main.tcl)的kbskit,tcl,tk,starkit,Tcl,Tk,Starkit,我正在尝试使用以下命令构建一个包含iwidgets和img包的kbskit: ./kbs.tcl -builddir=85 -r -mk-bi -bi="itcl3.4 itk3.4 iwidgets4.0.2 img1.4.1" install kbskit8.5 cp 85/bin/kbsmk8.5-bi kbsmk8.5-bi-run ls sim.vfs main.tcl img1.jpg ./kbsmk8.5-bi sdx.kit wrap sim -runtime kb
./kbs.tcl -builddir=85 -r -mk-bi -bi="itcl3.4 itk3.4 iwidgets4.0.2 img1.4.1" install kbskit8.5
cp 85/bin/kbsmk8.5-bi kbsmk8.5-bi-run
ls sim.vfs
main.tcl img1.jpg
./kbsmk8.5-bi sdx.kit wrap sim -runtime kbsmk8.5-bi-run
ls
kbsmk8.5-bi kbsmk8.5-bi-run sdx.kit sim.vfs sim
./sim
couldnt open "img1.jpg": no such file or directory
while executing
"image create photo sim_img -file "img1.jpg""
(file "/home/user1/sim/main.tcl" line 10)
为什么在这里找不到img1.jpg文件
我试着打开包装以检查文件是否在“sim”可执行文件中,并且它确实存在
cp sim /tmp
cd /tmp
./tclkit sdx.kit unwrap sim
ls sim.vfs
boot.tcl main.tcl img1.jpg boot.tcl tclkit.ico lib
ls sim.vfs/lib/
img1.4.1 itk3.4 tcl8 thread2.6.7 vfs1.4.2
itcl3.4 iwidgets4.0.2 tcl8.5 tk8.5
1) 有谁能帮助我理解上述行为吗
2) 我正在suse 32位上构建kbskit。如果我需要在ubuntu 32/64位上使用可执行文件,我需要在ubuntu上构建另一个可执行文件吗 您正试图从当前目录加载文件
img1.jpg
,该目录通常是启动脚本/工具包的目录(例如,如果您从/use/bin/yourkit
启动/home/user
,当前目录将是/home/user
)
解决方案是使用脚本的相对路径:
image create photo sim_img -file [file join [file dirname [info script]] img1.jpg]
这仅在源文件时有效。您可以将info script
的结果保存在变量中,也可以使用::starkit::topdir
变量,该变量指向工具包的topdir,因此
image create photo sim_img -file [file join $::starkit::topdir img1.jpg]
应按预期工作。谢谢Johannes。。完全符合我的目的!!你/其他人也能解释一下我的第二个问题吗。。ie,2)我正在suse 32位上构建kbskit。如果我需要在ubuntu 32/64位上使用可执行文件,我需要在ubuntu上构建另一个可执行文件吗。。同样,对于redhat??你可能应该问另一个问题。或者试试看。有道理:)非常感谢!