昨天搞了一整天都沒法解決
我和朋友寫的一個程式,是在Fedora 23上面開發的,使用起來也都沒問題
因為要相容在CentOS5上面,真的搞了很久,一堆dependency要處理
現在終於編譯完,剩下runtime出現問題
RuntimeError: tcl.h version (8.5) doesn't match libtcl.a version (8.4)
(為了讓CentOS5的Tcl環境和Fedora 23一樣,我就裝了Tcl 8.5.19
並且把所有 tclsh / libtcl.so link到8.5的檔案)
我用find指令找了整個硬碟,都沒有看到libtcl.a這個檔
後來才發現在python2.7/lib-tk/Tkinter.py裡面libtcl.a是寫死的
並不一定有這個檔案,但他主要的意思是系統的tcl和TkInter版本不同
程式碼裡面是這樣檢查的
tcl_version = str(self.tk.getvar('tcl_version'))
if tcl_version != tkinter.TCL_VERSION:
raise RuntimeError, \
"tcl.h version (%s) doesn't match libtcl.a version (%s)" \
% (_tkinter.TCL_VERSION, tcl_version)
因此由程式碼和吐到shell的error msg比對可看出
tkinter 的版本是 8.5
self.tk.getvar拿到的版本是 8.4
想要請有經驗的版友幫我解答一下,那個8.4是從系統哪個檔案讀到的呢?
因為我昨天編完Tcl 8.5後很確定有把/usr/lib /usr/bin /usr/local/lib /usr/local/bin
有關於tcl的檔案都link到8.5了,而且python 也有重新編譯過
到底是哪裡出了問題 orz