1. 程式人生 > >Ubuntu16.04下編譯spice-gtk

Ubuntu16.04下編譯spice-gtk

編譯環境準備:
1)安裝編譯工具

sudo apt-get install autotools-dev devhelp doxygen pkg-config devscripts

編譯安裝spice-protocol

下載spice-protocol 0.12.12原始碼
./configure
make
sudo make install
pkg-config –print-provides spice-protocol

安裝編譯spice所需要的第三方庫

./configure –prefix=/usr –localstatedir=/var –sysconfdir=/etc

其中, asciidoc編譯過程中產生問題,建議不要安裝。
sudo apt-get install libglib2.0-dev libpixman-1-dev libssl-dev libjpeg-dev libgstreamer1.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libgstreamer-plugins-base1.0-dev libcacard-dev
sudo apt-get install dh-autoreconf libpixman-1-dev libxrandr-dev  libasound2-dev libssl-dev libxfixes-dev libsasl2-dev libjpeg-dev  libxinerama-dev python-pyparsing libglib2.0-dev
sudo apt-get install liblz4-dev
sudo apt-get install libopus-dev
sudo apt-get install asciidoc(建議不要安裝)
sudo apt-get install libusbredirhost-dev libusrredirparser-dev usbredirserver

編譯qemu
修改configure,其中有一部分是default 的值,用來設定編譯支援選項:
linux_aio=”yes”
kvm=”yes”
spice=”yes”
usb_redir=”yes”

或者直接在命令列中設定也可

qemu依賴的第三方庫
sudo apt-get install device-tree-compiler texi2html texinfo libaio-dev libattr1-dev libbluetooth-dev libbrlapi-dev libcap-dev libcap-ng-dev libcurl4-gnutls-dev libfdt-dev libgnutls-dev libncurses5-dev libpulse-dev libsdl1.2-dev libseccomp-dev libxen-dev uuid-dev xfslibs-dev librados-dev librbd-dev

在configure的時候最好看下幫助,其中target system最好指定下,不然編譯時間會很長。

編譯libvirt

安裝依賴包
sudo apt-get install cdbs libxml2-dev libreadline-dev python-all-dev lvm2 open-iscsi libparted0-dev libdevmapper-dev libudev-dev libpciaccess-dev libnl-3-dev libnl-route-3-dev libyajl-dev libpcap0.8-dev libnuma-dev radvd libnetcf-dev libaudit-dev dwarves libxml2-utils libapparmor-dev libcurl4-openssl-dev

sudo apt-get install bridge-utils cgroup-lite cgroup-bin

./configure
make
sudo make install

如果make check的時候發現有幾個沒有pass,跟firewall相關,就不用管了

貌似重啟了一次,但是virsh –version的時候,發現找不到virsh: error while loading shared libraries: libvirt-lxc.so.0: cannot open shared object file: No such file or directory

應該是ldconf的目錄沒有。

在/etc/ld.so.conf.d/目錄下,建立一個libvirt.conf的檔案,內容:

libvirt default configuration

/usr/local/lib

執行sudo ldconfig即可。
定義了xml檔案後,可以使用
sudo virsh define xxx.xml來定義虛擬機器
sudo virsh start xxx 啟動虛擬機器
sudo virsh list 檢查

如果碰到這個問題:
LibvirtError: Failed to connect socket to ‘/usr/local/var/run/libvirt/libvirt-sock’: Connection refused
解決:用root許可權啟動libvirt。將原來的libvirt程序殺死,然後sudo libvirtd -d

檢查kvm是否可用
lsmod | grep kvm

cpu是否支援
cat /proc/cpuinfo | grep ‘vmx|svm’

單純使用qemu建立虛擬機器的過程

1)建立磁碟
$ qemu-img create -f qcow2 xxx.img 10G

2)使用iso映象啟動
qemu-system-x86_64 -m 2048 -enable-kvm -hda xxx.img -cdrom xxx.iso -boot d

不過上面的命令列還缺少遠端連線的命令列引數,顯示的命令列引數

libvirtd 和virt-manager

但是libvirt-bin還是出問題

參見上面找不到libvirtd的sock,需要root許可權

但是virt-manager只有lxc連線。。。,這個問題問題怎麼解決
可以選擇新建連線,直接加入本機的qemu連線。

建立虛擬機器的是,還出現儲存池的問題,直接刪除原有的default儲存池,新建一個就可以了

網路連線也是。

還有就是libvirt-bin裝不了。。。

直接刪除libvirt,使用包管理的也不行。。。

#

重新裝系統,重新編譯spice之類的
更改/etc/apt/source.list,使得src生效(由於使用的清華的tuna映象站,提供的src源一般會被註釋掉,所以取消註釋,重新sudo apt-get update一下)

sudo apt-get build-dep xxx
再進行編譯
但是有的時候會涉及到自己想編譯的包,要仔細看下
然後直接拷貝可能安裝的包,去除自己想要編譯的包。

$./configure –prefix=/usr –localstatedir=/var –sysconfdir=/etc

1)首先編譯spice-protocol
build-dep
./configure –prefix=/usr –localstatedir=/var –sysconfdir=/etc
make
sudo make install

2)編譯spice
build-dep中去掉spice-protocol中,直接install

celt051還是要單獨編譯安裝
libogg沒有sudo apt-get install libogg-dev
./configure –prefix=/usr –localstatedir=/var –sysconfdir=/etc
make
sudo make install

./configure –prefix=/usr –localstatedir=/var –sysconfdir=/etc(繼續配置spice)
缺少LZ4 support和gstreamer
sudo apt-get install liblz4-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install gstreamer1.0-plugins-ugly
sudo apt-get install gstreamer1.0-libav

3)編譯spice gtk
build-dep 去掉spice-protocol,直接sudo apt-get install
sudo apt-get install gstreamer1.0-plugins-bad
make
sudo make install

4)安裝virt-manager
直接安裝apt-get install virt-manager
直接安裝,但是spice相關的包沒法使用apt-get單獨remove,會在/usr/lib/x86_64-linux-gnu下面有幾個lib,一旦運行了spicy,會出現link with no time reference的錯誤
將下面幾個老版本的庫移到別的地方,這樣spicy就可以正常運行了。
lrwxrwxrwx 1 root root 33 12月 26 2015 libspice-client-glib-2.0.so.8 -> libspice-client-glib-2.0.so.8.5.0
-rw-r–r– 1 root root 1117536 12月 26 2015 libspice-client-glib-2.0.so.8.5.0
lrwxrwxrwx 1 root root 32 12月 26 2015 libspice-client-gtk-3.0.so.4 -> libspice-client-gtk-3.0.so.4.0.0
-rw-r–r– 1 root root 231440 12月 26 2015 libspice-client-gtk-3.0.so.4.0.0
lrwxrwxrwx 1 root root 28 12月 26 2015 libspice-controller.so.0 -> libspice-controller.so.0.0.0
-rw-r–r– 1 root root 63400 12月 26 2015 libspice-controller.so.0.0.0
lrwxrwxrwx 1 root root 25 2月 16 03:37 libspice-server.so.1 -> libspice-server.so.1.10.0
-rw-r–r– 1 root root 1182176 2月 16 03:37 libspice-server.so.1.10.0

git下來的spice-gtk出問題
//usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0: error adding symbols: DSO mi