為查詢錯誤訊息,從「終端機」下命令開啟 Chrome,如果有任何錯誤訊息,就會顯示些線索。
[SiB@Celeron-D ~]$ google-chrome似乎是 libudev.so.0 這個「動態函式庫」不能載入,先切換成 root 身份,再用 whereis 這個命令查一下這個檔案的目錄位置。
/usr/bin/google-chrome: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory
[root@Celeron-D ~]# whereis libudev.so.0可看到有兩個版本數字不同的檔案,分別位在 /lib64/ 及 /usr/lib64/ 這兩個目錄。這裡分兩點來說明:
libudev.so: /lib64/libudev.so.1 /usr/lib64/libudev.so.1
- /lib64/ 是一鏈結,指向 /usr/lib64/ 這個真實目錄,並不是存在兩份檔案。
- libudev.so.0 應該是 Chrome 編譯時使用的版本,而 libudev.so.1 是較新的版本,但是有著不同的版本編號
[root@Celeron-D ~]# cd /usr/lib64/又看到兩個檔案:libudev.so.1 和 libudev.so.1.3.2,第一個檔名的『->』是顯示鏈結所指向的目錄。這種用『鏈結』方式改變檔案,在類 Unix 系統中非常常用,可以讓程式不會因「動態函式庫」的版本編號小改變,而立即造成執行的問題。但是,上面的查詢結果並未發現 libudev.so.0 這個檔案。
[root@Celeron-D lib64]# ll libudev*
lrwxrwxrwx. 1 root root 16 5? 17 21:38 libudev.so.1 -> libudev.so.1.3.2
-rwxr-xr-x. 1 root root 69704 5? 7 16:58 libudev.so.1.3.2
通常,在類 Unix 的系統中,多會考慮版本相容的問題。因此,預設使用 libudev.so.0 的程式若改用 libudev.so.1 應該不會出問題才對。一樣用『鏈結』的方式修改檔名,有兩種改法:
- 建立一個鏈結到 libudev.so.1 的新鏈結
[root@Celeron-D lib64]# ln -s libudev.so.1 libudev.so.0
- 建立一個鏈結到 libudev.so.1.3.2 的新鏈結
[root@Celeron-D lib64]# ln -s libudev.so.1.3.2 libudev.so.0
已測試版本:
- Fedora: 18 (kernel 3.8.11-200, 3.9.2-200)
- Chrome: 26.0.1410.63
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)