MPSOC的linux开发需要使用petalinux,选择Ubuntu操作系统。
1.Ubuntu
1.1. Ubuntu安装
版本16.04.03
vmare版本:12.0
安装时注意选择“稍后安装”,否则是阉割版。另外,有个界面显示“删除整个磁盘”指的是虚拟机的磁盘,不会删除host上的内容,可以放心。
剩下就是一路next了,比较简单。
1.2. Vmware Ubuntu和HOST主机共享网络
现在公司的网络一般都处于域中,而且访问外网一般都需要批准。偏偏我们公司外网权限不好申请,只能采用变态的方法了。
在vmware-编辑-虚拟网络编辑器中,把VMnet0固定设置到host的有线网卡上
设置全局代理服务器:系统设置——网络——网络代理设置为http,192.168.250.62:9666——应用到整个系统
设置后,ubuntu的;浏览器可以连接外网
由于使用了软件,选择官方镜像,不要选国内镜像,否则很慢。
其实原理比较简单,桥接方式使host和ubuntu有自己独立的网卡,host设置代理,ubuntu用代理上网。类似局域网里两台计算机。
特别注意:要把host的wifi关掉,否则可能导致网络异常。 如果用wifi,也可以把第2步设置为无线网卡,不过没有试过。
1.3. 软件安装方法
(1). ubuntu使用apt-get获取和安装软件
(2). 软件源有官方的源/PPA
官方源不用说了
PPA全称为Personal Package Archives,是ubuntu母公司设计的网站Launchpad,可以允许第三方上传软件,有时一些大软件,也提供PPA的地址。
(3).软件安装方式,以python为例
python在ubuntu下有几种安装方法:
通过ubuntu官方的apt工具包安装
通过PPA(Personal Package Archive) 的apt工具包安装
通过编译python源代码安装
(4). apt-get怎么知道文件名?
1)直接在shell里输入待安装的程序,一般没有时提示信息里会有apt-get 文件名
2)也可以用apt查找源里的程序
apt-cache search xxxx
1.4. 安装wine和source insight
习惯了windows的source insight,在ubuntu里装个wine模拟器,然后就可以安装windows里的软件了,也挺方便的。很多人说运行效率低,不过个人感觉还可以,虚拟机给1~2G内存,也没啥问题。工具嘛,自己用着顺手就行了,非得搞个你死我活,没有必要。
wine有PPA的源,如下方式可安装wine
sudo add-apt-repository ppa:wine/wine-builds 添加源
sudo apt-get update 把源更新到系统里
sudo apt-get install --install-recommends wine-staging 安装
sudo apt-get install winehq-staging 安装
卸载
sudo apt-get install ppa-purge
sudo ppa-purge ppa:wine/wine-build
wine安装exe也很方便
:~$ wine
Usage: wine PROGRAM [ARGUMENTS...] Run the specified program // 用命令行安装
wine --help Display this help and exit
wine --version Output version information and exit
wine --patches Output patch information and exit
wine --check-libs Checks if shared libs are installed
例乳 wine sisetup.exe 即可安装source insight
2.petalinux
petalinux的详细介绍xilinx有专门的文档:ug1144-petalinux-tools-reference-guide.pdf
2.1. 安装依赖软件和库
安装依赖很多线程的软件和库,大部分比较好装,直接用apt-get install即可。在安装过程中,也遇到了一些问题,记录一下.
2.1.1 python 3.4
ubuntu的软件源最新为2.7.0,不满足要求,只能去官网下了
使用PPA方式:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.6
指定默认打开新装的3.6 安装完成之后,你在终端中输入python,输出的信息里面会提示是2.7版本的,也就是说默认打开的并不是刚才安装好的3.5,所以还需要我们重新修改一下链接。
:/usr/bin$ ls pyth* -ln
lrwxrwxrwx 1 0 0 9 11月 22 10:55 python -> python2.7
lrwxrwxrwx 1 0 0 9 11月 22 10:55 python2 -> python2.7
-rwxr-xr-x 1 0 0 3546104 11月 19 2016 python2.7
lrwxrwxrwx 1 0 0 9 11月 22 10:55 python3 -> python3.5
-rwxr-xr-x 1 0 0 4460336 11月 18 2016 python3.5
-rwxr-xr-x 1 0 0 4460336 11月 18 2016 python3.5m
-rwxr-xr-x 2 0 0 4437376 7月 29 23:26 python3.6
-rwxr-xr-x 2 0 0 4437376 7月 29 23:26 python3.6m
lrwxrwxrwx 1 0 0 10 11月 22 10:55 python3m -> python3.5m
方法如下:
:/usr/bin$ sudo cp python python_back
:/usr/bin$ sudo rm python
:/usr/bin$ sudo ln -s python3.6 python
:/usr/bin$ python
Python 3.6.2 (default, Jul 17 2017, 23:14:31)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
2.1.2 libglib2.0-dev
dpkg: 处理软件包 xxxxxxxx (--configure)时出错:
可能时把apt搞乱了,网上有方法
我的ubuntu是16.04版本,今天安装软件各种突然安装不上,有如下提示:
/××××××××××××××××××××××××××
dpkg: 处理软件包 python-crypto (--configure)时出错:
子进程 已安装 post-installation 脚本 返回错误状态 1
...
dpkg: 处理软件包 samba-common-bin (--configure)时出错:
依赖关系问题 - 仍未被配置
...
等等问题,最后
在处理时有错误发生:
python-dnspython
python-crypto
python-ldb
python-tdb
python-samba
samba-common-bin
samba
libglib2.0-dev
libatk1.0-dev
libcairo2-dev
libgdk-pixbuf2.0-dev
libpango1.0-dev
libgtk2.0-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)
××××××××××××××××××××××××××/
最后上网找答案:
dpkg: 处理软件包 python-crypto (--configure)时出错:
该软件包正处于非常不稳定的状态;
您最好在配置它之前,先重新安装它
在处理时有错误发生:
python-crypto
E: Sub-process /usr/bin/dpkg returned an error code (1)
复制代码
#解决这个问题需要备份dpkg下的info,然后自己创建一个新的info,然后更新,再把新的info里的内容拷贝到旧的里面,旧的再改成info,删除自己添加的
:~$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old
:~$ sudo mkdir /var/lib/dpkg/info
:~$ sudo apt-get update
:~$ sudo apt-get -f install
:~$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old
:~$ sudo rm -rf /var/lib/dpkg/info
:~$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info
这个方法是有效的
2.2. 安装petalinux
安装好依赖库以后,petalinux本身安装比较顺利,没报啥错误。
petalinux也就是把开发过程打成若干脚本了,其实限制还是挺多的,感觉不如用gcc和make这类底层的灵活,后续看看怎么把这些东西剥离出来。