我正在尝试在RedHat 5上安装TCL / TK作为普通用户:
TCL_VERSION=8.6.1
BASE_PATH=/myownpath
tar -xzf tcl${TCL_VERSION}-src.tar.gz
cd tcl${TCL_VERSION}/unix
./configure \
--prefix=${BASE_PATH} \
--without-tzdata \
--enable-64bit
make -j9
sed -e "s@^\(TCL_SRC_DIR='\).*@\1${BASE_PATH}'@" \
-e "/TCL_B/s@='\(-L\)\?.*unix@='\1${BASE_PATH}/lib@" \
-i tclConfig.sh
make install
make install-private-headers
chmod -v 755 ${BASE_PATH}/lib/libtcl*.so
到目前为止一切顺利:$ {BASE_PATH} /include/tcl.h存在且$ {BASE_PATH} /lib/tclConfig.sh看起来很好:
# String to pass to the compiler so that an extension can
# find installed Tcl headers.
TCL_INCLUDE_SPEC='-I/myownpath/include'
然后我尝试安装TK:
tar -xzf tk${TCL_VERSION}-src.tar.gz
cd tk${TCL_VERSION}/unix
./configure \
--prefix=${BASE_PATH} \
--enable-64bit \
--with-tcl=${BASE_PATH}/lib \
make -j9
sed -e "s@^\(TK_SRC_DIR='\).*@\1${BASE_PATH}'@" \
-e "/TK_B/s@='\(-L\)\?.*unix@='\1${BASE_PATH}/lib@" \
-i tkConfig.sh
make install
make install-private-headers
chmod -v 755 ${BASE_PATH}/lib/libtk*.so
使用以下消息失败:
tk8.6.1/unix/../generic/tk.h:19:17: error: tcl.h: No such file or directory
我错过了什么?!?
答案 0 :(得分:1)
我按照以下步骤在Linux(Ubuntu)上安装tcl,tk。 请使用sudo以避免任何与权限相关的问题 创建您选择的目录,例如/ opt / tcltk
安装tcl
安装tk
cd / opt / tcltk /提取tk焦油
/ opt / tcltk /> sudo gunzip -c tk8.6.9.1-src.tar.gz | tar -xf-
/opt/tcltk/tk8.6.9/unix> sudo ./configure --prefix = / opt / tcltk
/opt/degrib/tcltk/tk8.6.9/unix> sudo make
sudo make install
如果安装时出现任何问题,请发表评论
答案 1 :(得分:0)
如果您想以普通用户的身份安装Tcl,那么从source distribution开始就很容易做到(您需要选择您想要的版本;我现在一般推荐8.6.1,但这是一个随时间变化的建议。
然后,切换到解压缩的源代码分发中的unix
目录并运行./configure
; 重要: 要以非root方式安装,必须为--prefix
指定configure
选项,以说明它的位置将要安装,您必须将其指定为完整路径。例如,如果我要将其安装在我的主目录下,我将使用:
./configure --prefix=/home/dkf
然后,只需make
和make install
。或者合并为一个make all install
;如果您不是以其他用户身份安装,则可以一步完成。在此之后,我发现我可以通过/home/dkf/bin/tclsh8.6
运行Tcl 8.6.1,二进制库和tclConfig.sh
将在/home/dkf/lib
;以明显的方式调整您指定的路径。如果您未指定--prefix
,则源代码分发使用/usr/local
作为默认值,但该目录只能由root用户正常写入。
您必须指定这样的路径的原因是Tcl的支持脚本的路径被烘焙到二进制库中。 (它的运行时间可以覆盖,但是当你可以轻松地开始时,我不建议这样做。)
构建Tk时,需要兄弟 Tcl构建。目前,您也建议您将它们设为相同的版本。您还应指定--with-tcl=
并提供刚刚安装的tclConfig.sh
的路径;虽然它可能没有,但最简单的方法就是这样做。一旦你构建并安装了Tcl和Tk,你(可能)就不需要保留源树了。
好的,我承认我确实保留了它们,但我是一个数据包......