看板 Linux 關於我們 聯絡資訊
※ [本文轉錄自 Electronics 看板] 作者: zxvc (修行) 看板: Electronics 標題: Re: [心得] 裝EDA tools (GLIBC_2.0 not defined問題) 時間: Fri Aug 21 09:54:30 2009 最近我管理的EDA Linux工作站(Ubuntu 9.04 amd64)將要製作image, 還原到別的工作站。 為了避免有些EDA tools沒設定好、後來才發現的話, 我就必需一台一台改設定,很麻煩。 所以我就開始對每套安裝過的tool作測試,看能不能正常啟動。 不幸的有一套tool - SynTest DFT-PRO Plus 2009.03 (64-bit)有點問題。 DFT-PRO Plus大部分的程式都可以執行,也都是64-bit的版本!? 為什麼我要強調一個64-bit的軟體(組)大多是64-bit? 這是因為,沒想到DFT-PRO Plus 2009.03 64-bit 就是有一個舊軟體是32-bit - TurboCheck-RTL(vlog123) XD 32-bit也沒有關係,反正64-bit OS + 32-bit Libraries應該就可以執行 32-bit application!? 但不幸的一執行vlog123就掛了: $ vlog123 vlog123: relocation error: vlog123: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference 但我用這個指令一看: $ strings /lib32/libc.so.6|grep GLIBC 的確有GLIBC_2.0啊! 這是我處理過的EDA tools問題中目前最棘手的, 坦白來講我大約在2006-2007年就遇到過這個問題, 當時無解、搜google許多解法也無效, 只好乖乖的灌EDA tools指定的Linux distribution就沒事。 但如今又遇上這個問題,偏偏在我每套tools都搞定、 Linux的環境也設定完畢,才叫我砍掉重練!? T.T 後來不死心,昨天又花了一天的時間, 跟這個問題從早上戰鬥到晚上,不知在google上搜了多少篇有用沒用的文章, 終於在睡覺前搞定了。 要想出解這個問題的方法要有一定的Linux知識、經驗背景, 否則我想我也不太可能會想得出來。 簡單來說的解法如下: 首先要知道Linux上thread libraries主要有兩個,Linuxthread、 Native POSIX Thread Library(NPTL)。Linuxthread是比較舊的。 Ubuntu 6.06(2006年06月)之前支援Linuxthread, Ubuntu 6.10(2006年10月)之後不支援Linuxthread、只支援NPTL。 ---------------------這段有點假設的成分-------------------- 許多舊的EDA tools當初在compiled時是去呼叫Linuxthread, 所以拿到一些新的Linux distributions不支援Linuxthread libs就會出問題, 即使有NPTL的libs,ld(dynamic linker)也會當作沒有(用) XD 這也就是上面仍會有GLIBC_2.0 not defined的原因。 ----------------------------------------------------------- 解決的方法是,我們裝上支援Linuxthread的舊libraries。 Ubuntu可以去這個地方找到2006年的舊lib: ftp://free.nchc.org.tw/ubuntu/pool/main/ 例如vlog123需要這些packages: libc6_2.3.6-0ubuntu20_i386.deb libx11-6_1.0.0-0ubuntu9_i386.deb libxau6_1.0.0-0ubuntu4_i386.deb 用GNOME的壓縮管理程式解壓這些package後, 只要把lib收集起來丟到同一個目錄(方便管理,如:/lib32old)。 然後設定舊程式(如vlog123)啟動時優先讀這些舊libs的環境變數 (LD_LIBRARY_PATH),再用舊版的ld-linux.so.2去執行vlog123.exe就可以了。 我為了方便,把原先的vlog123改名成vlog123.exe, 然後寫一個script (vlog123)去執行原本的vlog123。如下: $ cat /usr/cad/syntest/syntest/cur/tc_rtl/bin/vlog123 #!/bin/sh # Startup script for real vlog123. Written by myh@live.com, 08/21/2009. LIB32_OLD_PATH=/lib32old LD_LIBRARY_PATH=${LIB32_OLD_PATH} ${LIB32_OLD_PATH}/ld-linux.so.2 ${VLOG123_HOME}/bin/vlog123.exe $1 真像在這裡: http://0u28vw.blu.livefilestore.com/y1pqZwa9thyUB8MqrjlCrmuHem-uEzKqM76Y9flM2HBoQNDdmSrsA1TId2u3VNnQ8PsLnxG7ndF-SYyPDmrUbVDWJiDuXu9YNI-/vlog123.png
http://tinyurl.com/mn63o5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.71.31 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.71.31
zxvc:另外提供一些參考資訊。Linux kernel是從2.6開始支援NPTL, 08/21 10:35
zxvc:glibc好像是從2.4開始。 08/21 10:35
kkc:帥耶 不過EDA tools還是在某些特定的Linux上面比較好裝 08/21 10:59
kkc:要不然搞對應的lib 就可以弄到抓狂了orz 08/21 10:59
zxvc:當初也想灌在EDA tools建議的Linux distributions,但被推薦 08/21 13:05
zxvc:的distribution往往都很舊,有的更新又要錢(RHEL)。 08/21 13:06
zxvc:新的distribution對硬體支援度也比較高。 08/21 13:09
zxvc:其實我也有灌過比較像RHEL的distribution,如CentOS,但一灌 08/21 13:17
zxvc:好也是缺一堆lib XD 08/21 13:17
zxvc:只是我遇到這個問題不止是缺lib,還牽涉到binary comptiable 08/21 13:20
zxvc:的問題。 08/21 13:21
finalhaven:我灌CentOs沒遇到啥問題,EDA TOOL都ok! 08/21 15:50
kkc:我也都是灌CentOS 幾乎都可以跑~ 08/22 01:05
peterjack:直接export LD_ASSUME_KERNEL=2.4.19 Call LT不行嗎? 08/23 22:45
zxvc:Ubuntu 6.10後沒有Linuxthread的libraries,所以不能用 08/24 11:08
zxvc:LD_ASSUME_KERNEL。 08/24 11:08
zxvc:我不知道CentOS還有沒有使用Linuxthread的libraries。 08/24 11:09
peterjack:就我所知道RHEL 5 Ent版本依然保留這個特色 08/24 20:55
peterjack:當初的確也是與版大遇到類似的問題 也是透過Call LT解的 08/24 20:56
peterjack:Ubuntu 6.06似乎是最後一個同時支援NPTL & TH的版本 08/24 20:59
peterjack:so sad 08/24 20:59
peterjack:當然我後來遇到的問題反而是NPTL 與 TH效能的比較問題 08/24 21:00
peterjack:辛苦原PO的分享了 08/24 21:00