天天看點

ubuntu中手動編譯源碼安裝Xorg-server過程中依賴關系的解決ubuntu中手動編譯源碼安裝Xorg-server過程中依賴關系的解決

ubuntu中手動編譯源碼安裝Xorg-server過程中依賴關系的解決

在linux系統中手動編譯源碼安裝軟體包的過程是非常痛苦的,然而這一個多星期以來我是強忍住脾氣體驗了一把,雖然面對慢的令人發指的編譯過程和令人不知所措的依賴關系,心裡都是淚啊,但是整個過程下來,對于軟體包依賴關系的了解也更深了一步。

由于需要在beagleboneblack上面安裝圖形界面,并要使用TI公司提供的SGX530驅動包進行圖形加速,而直接安裝Xorg之後的圖形驅動fbdev是核心中預設的驅動,并沒有針對顯示卡的圖形加速功能。現在要安裝針對SGX530的圖形驅動,利用TI公司提供的bin檔案。但是其提供的最新版本的bin檔案是針對x server1.12.4進行編譯的,而系統預設安裝的x server最新版本為1.15.1,是以需要将x server版本降為1.12.4。

在嘗試過安裝完Xorg-1.15之後再安裝xorg-server-1.12.4,提示缺少輸入驅動evdev的情況下,再次編譯安裝和xorg-server-1.12.4對應版本的xf86-input-evdev-2.7.0時,仍無法啟動X伺服器,提示undefined symbol:udev_new,查找過後始終無法找到解決方法後,因為在網上我幾乎沒有找到和這個問題相關的資料,無奈之下隻得放棄這種路子。于是重新開始在一開始就直接安裝xorg-server-1.12.4,但是不清楚Xorg這個實作究竟包含了除xorg-server之外,還包含哪些子產品,是以隻能一步一步嘗試。

Xorg是X11視窗系統的一個開源實作,大部分發行版都提供了Xorg,如果不用登入管理器啟動X,則需要安裝xorg-init軟體包,其提供了startx和xinit工具。startx和xinit首先讀取使用者目錄下的~/.xinitrc檔案,如果~/.xinitrc不存在,則讀取/etc/X11/xinit/xinitrc檔案作為備用。其中會使用Twm作為視窗管理器,Xclock和Xterm(需要分别安裝xorg-twm,xorg-xclock,xorg-xterm)。

注意:

- 如果出現問題,請檢查日志檔案 /var/log/Xorg.0.log. 看看有沒有以(EE)(代表錯誤) 或 (WW) (代表警告)開頭的内容。

- 如果 $HOME 中有空 .xinitrc 檔案,請删除或修改它。否則 X 會顯示空白螢幕,而且 Xorg.0.log 中沒有任何錯誤。删除它會運作一個預設的環境。

1 安裝xorg-server

下載下傳x server1.12.4版本

wget http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.12.4.tar.gz

./configure編譯,遇到如下問題

checking whether build environment is sane… configure: error: newly created file is older than distributed files!

Check your system clock

系統時間有問題,一看我的系統時間還是在2000年,我勒個去,改!

sudo data -s “2012-02-21 18:45”

,OK!再次編譯,此錯誤不再出現,但是根據提示需要安裝以下依賴包。

pkg-config

libpixman-1-dev

libx11-dev

x11proto-gl-dev

libglib2.0-dev

libgl1-mesa-dev

x11proto-xf86dri-dev

checking for SHA1 implementation… configure: error: No suitable SHA1 implementation found

./configure –help|grep libgcrypt –with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto

sudo apt-get install pkg-config libpixman-1-dev libx11-dev x11proto-gl-dev libglib2.0-dev libgl1-mesa-dev x11proto-xf86dri-dev libgcrypt11-dev

安裝完上述依賴之後,再次編譯

./configure --with-sha1=libgcrypt

No package ‘xcmiscproto’ found

No package ‘bigreqsproto’ found

No package ‘randrproto’ found

No package ‘renderproto’ found

No package ‘fontsproto’ found

No package ‘videoproto’ found

No package ‘compositeproto’ found

No package ‘recordproto’ found

No package ‘scrnsaverproto’ found

No package ‘resourceproto’ found

No package ‘xineramaproto’ found

No package ‘xkbfile’ found

No package ‘xfont’ found

No package ‘pciaccess’ found

由于這是在編譯,是以依賴包都要安裝開發版(development,即字尾為-dev),一般情況下我們可以使用根據錯誤提示

apt-cache search xxx

來尋找我們需要安裝的依賴包。按照上述提示,再次安裝所需要的依賴包:

sudo apt-get install x11proto-xcmisc-dev x11proto-bigreqs-dev x11proto-randr-dev x11proto-render-dev x11proto-fonts-dev x11proto-video-dev libpciaccess-dev

sudo apt-get install x11proto-composite-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-resource-dev x11proto-xinerama-dev libxkbfile-dev libxfont-dev

./configure --with-sha1=libgcrypt

終于順利配置完成

make

sudo make install安裝成功

安裝

xorg-server-1.12.4

之後,直接啟動X,根據

/usr/var/log/Xorg.0.log

中的資訊,在未添加TI的顯示卡驅動的時候提示缺少子產品fbdev,因為Xorg預設加載通用驅動fbdev作為圖形驅動,添加TI的圖形驅動子產品之後,Xorg加載pvr作為圖形驅動,但是又提示缺少evdev輸入驅動,因為evdev預設作為滑鼠、鍵盤等輸入的驅動。

2 安裝evdev輸入驅動

下載下傳與

xorg-server-1.12.4

版本相對應的輸入驅動

xf86-input-evdev-2.7.0.tar.gz

wget http://xorg.freedesktop.org/archive/individual/driver/xf86-input-evdev-2.7.0.tar.gz

./configure --prefix=/usr

/usr/lib/pkgconfig/xorg-server.pc

為空,系統無法識别xorg-server的資訊,導緻編譯無法繼續進行。重新make install後發現xorg-server.pc正常,編譯可以繼續進行。

sudo apt-get install xutils-dev libudev-dev
make
sudo make install
           

啟動X的時候再次失敗,提示兩個錯誤

(EE) AIGLX error: dlopen of /usr/lib/arm-linux-gnueabihf/dri/pvr_dri.so failed (/usr/lib/arm-linux-gnueabihf/dri/pvr_dri.so: cannot open shared object file: No such file or directory)

(EE) XKB: Couldn’t open rules file /usr/share/X11/xkb/rules/evdev

3 安裝XKB鍵盤驅動

根據錯誤提示是XKB提示的錯誤,在網上搜尋後發現時鍵盤驅動的問題。兩個實際上都是檔案不存在,第一個中pvr_dri.so不存在,第二個中rules檔案夾不存在。xkb檔案夾下隻有一個compiled檔案夾:

[email protected]:/usr/share/X11/xkb/compiled$ ls -l

total 4

-rw-r–r– 1 root root 644 Jul 15 13:20 README.compiled

在網上查詢說xkb軟體已經安裝,而xkb檔案夾下卻沒有相應的資料,是以需要重新安裝xkb配置資料:

sudo apt-get install xkb-data

[email protected]:/usr/share/X11/xkb$ ls -l

total 28

drwxr-xr-x 2 root root 4096 Jul 15 14:41 compat

drwxr-xr-x 2 root root 4096 Jul 15 13:20 compiled

drwxr-xr-x 4 root root 4096 Jul 15 14:41 geometry

drwxr-xr-x 4 root root 4096 Jul 15 14:41 keycodes

drwxr-xr-x 2 root root 4096 Jul 15 14:41 rules

drwxr-xr-x 13 root root 4096 Jul 15 14:41 symbols

drwxr-xr-x 2 root root 4096 Jul 15 14:41 types

之後提示的錯誤變為如下:

cannot find /usr/bin/xkbcomp

(EE) Error compiling keymap (server-0)

[ 2752.645] (EE) XKB: Couldn’t compile keymap

Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.

有網友說安裝x11-xkb-utils軟體包後有效,安裝之

sudo apt-get install x11-xkb-utils

,安裝完成之後,檔案

/usr/bin/xkbcomp

就出現了,然後直接啟動X

X -config usr/share/X11/xorg.conf.d/60-outputs.conf -verbose

ps -A

後發現X已經成功啟動!!!

4 圖形應用程式啟動測試

在X伺服器已經成功啟動的情況下,我迫不及待的需要用一個圖形應用程式來驗證X伺服器可以正常運作,于是

sudo apt-get install x11-apps

,然後啟動電腦

xcalc

,在beagleboneblack的顯示螢幕上已經成功地運作了電腦程式,并且觸屏也正常工作。下一步就是安裝gnome-session來看一下加上了針對SGX530的TI的圖形加速的桌面效果如何。

期待中!

祝楓

2016年7月15日于深圳