前面有一个博客介绍 opencv的编译,然后发现虽然编译通过,其实并不完美,比如没有gtk支持。
其实我的电脑上是安装了gtk库的,但是在寻找gtk的时候,报错:
Package 'xproto', required by 'xau', not found
什么情况,我百度这个错误,各自感觉看不懂,重要的是没有说修复过程,
$ sudo apt install libxproto-dev xproto
然后发现这个东东,并没有发现什么,伸手党倒腾崩溃。
然后只有找源码了,好在在github上找到了。
运行下面命令:
$ git clone https://github.com/freedesktop/xorg-xproto.git
cd xorg-xproto && ./autogen.sh && sudo make install && cd ..
然后问题就解决了,不过还有:
Package 'renderproto', required by 'xrender', not found
这还没有完:
Package 'kbproto', required by 'x11', not found
Package 'xextproto', required by 'xext', not found
Package 'xineramaproto', required by 'xinerama', not found
Package 'inputproto', required by 'xi', not found
Package 'fixesproto', required by 'xfixes', not found
Package 'randrproto', required by 'xrandr', not found
Package 'compositeproto', required by 'xcomposite', not found
Package 'damageproto', required by 'xdamage', not found
看到了吧,这是让人崩溃,而且这些错误是一个一个的来的,并不知道下一个错误是啥,就等着,不过好在现在都知道了。
写一个脚本完事:
git_package="xproto renderproto kbproto xextproto xineramaproto inputproto fixesproto randrproto compositeproto damageproto"
for i in $git_package;
do
echo 下载 $i ...
git clone https://github.com/freedesktop/xorg-$i.git >> download-$i.txt 2>&1
# git clone https://github.com/freedesktop/xorg-xproto.git
echo 安装 $i ...
cd xorg-$i && ./autogen.sh >>../install-$i.txt 2>&1 && sudo make install >>../install-$i.txt 2>&1 && cd ..
done
将上面代码复制到 install_proto.sh 文件中,然后bash 运行,直接自动安装。
最后得到的效果是总算gtk能正常使用了:
-- Checking for module 'gtk+-3.0'
-- Found gtk+-3.0, version 3.18.9
git项目地址居然神秘消失,让人尴尬,跟新一波脚本
import os
p_down_dir = 'p_down'
p_urls = ['http://distfiles.macports.org/xorg-xproto/xproto-7.0.31.tar.bz2',
'http://distfiles.macports.org/xorg-renderproto/renderproto-0.11.1.tar.bz2',
'http://distfiles.macports.org/xorg-kbproto/kbproto-1.0.7.tar.bz2',
'http://distfiles.macports.org/xorg-xextproto/xextproto-7.3.0.tar.bz2',
'http://distfiles.macports.org/xorg-xineramaproto/xineramaproto-1.2.1.tar.bz2',
'http://distfiles.macports.org/xorg-inputproto/inputproto-2.3.2.tar.bz2',
'http://distfiles.macports.org/xorg-fixesproto/fixesproto-5.0.tar.bz2',
'http://distfiles.macports.org/xorg-randrproto/randrproto-1.5.0.tar.bz2',
'http://distfiles.macports.org/xorg-compositeproto/compositeproto-0.4.2.tar.bz2',
'http://distfiles.macports.org/xorg-damageproto/damageproto-1.2.1.tar.bz2']
if not os.path.exists(p_down_dir):
os.makedirs(p_down_dir)
os.chdir(p_down_dir)
for url in p_urls:
filename = os.path.basename(url)
os.system('wget '+url+' -O '+filename)
os.system('tar xf '+filename)
pro_name = filename[:-8]
os.chdir(pro_name)
if os.path.exists('configure'):
ret = os.system('./configure >>../install-%s.txt 2>&1' % (filename))
elif os.path.exists('autogen.sh'):
ret = os.system('./autogen.sh >>../install-%s.txt 2>&1' % (filename))
else:
print('cant config project:', pro_name)
continue
print('[%s]build1: ' % pro_name, ret)
ret = os.system('sudo make install >>../install-%s.txt 2>&1' % (filename))
print('[%s]build2: ' % pro_name, ret)
os.chdir('..')
运行后像这样的就正常:
--2020-05-20 18:20:31-- http://distfiles.macports.org/xorg-damageproto/damageproto-1.2.1.tar.bz2
Resolving distfiles.macports.org (distfiles.macports.org)... 23.111.9.35
Connecting to distfiles.macports.org (distfiles.macports.org)|23.111.9.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 98392 (96K) [application/x-bzip2]
Saving to: ‘damageproto-1.2.1.tar.bz2’
damageproto-1.2.1.tar.bz2 100%[=============================================================>] 96.09K 116KB/s in 0.8s
2020-05-20 18:20:32 (116 KB/s) - ‘damageproto-1.2.1.tar.bz2’ saved [98392/98392]
[damageproto-1.2.1]build1: 0
[damageproto-1.2.1]build2: 0
第一个build1:是项目构建,0状态表示正常
第二个build2: 是项目编译,0状态表示正常
如果不是0,大家看 p_down 下对应项目的 install-*.txt 日志文件。根据错误在百度上查查,然后做相应处理。
完成一个坑。