星期二, 3月 15, 2005

[.Net]cannot handle TLS data

最近更新了 dag 的 mono RPM 以後,mono 只會說
mono: error while loading shared libraries: libmono.so.0: cannot handle TLS data


令人無奈...去抓官方網站 的 RPM for rh9(因為我用的是WBEL,不能用 Fedore Core 3 的 rpm)之後,也無法使用...

在網路上搜尋了一下,其實所謂的 TLS 有兩種: Transport Layer Security, 或是 Thread-Local Storage. 一開始我被搞混了,我以為是 Transport Layer Security, 所以我更新了 openssl 等等相關的 library, 但是卻於事無補.

後來又多花了一天在找這問題,終於,我才發現是 Thread-Local Storage 搞的.可惡,我心裡想,這個我不搞清楚,那我這兩三年的 Linux 經驗豈不是白混的??又繼續找,看到底是缺了什麼 library,才會這樣...今天我終於找到解答,原因是因為我的 glibc 是 i386 arch 的,並沒包含 tls 的部分,所以必須要更新到 i586/i686 才可以.

對,我承認我膽小,所以我不敢強制把我的 glibc 升到 i586 (我的 linux 是架設在 AMD 350 上...,所以是 i586),於是我退而求其次,我重新下載 DAG 網站上的 mono.spec, 把 revision 改為 2, 重新包裝 source rpm, 然後再編譯一次.這次,當然就可以安裝了~~

嗚嗚嗚~~真是花了我不少功夫啊....

註:
Thread-Local Storage
http://linux.web.cern.ch/linux/scientific3/docs/rhel-gcc-en-3/thread-local.html

沒有留言: