http://www.jb51.cc/article/p-gknmfzks-ys.html

Ubuntu14.04开发环境搭建

嵌入式开发过程中很重要的一环节就是开发环境的搭建,开发环境搭建的好可以很好的提高开发效率。其中关键的一部就是挂载运行程序,对于程序的挂载运行需要借助NFS服务器,下面介绍windowslinux操作系统下NFS服务器的搭建。

1.1Ubuntu14.04系统安装

对于ubuntu系统的安装有两种方式,一种是安装在虚拟机里(vBoxvmware)另外是直接安装在裸机上。对于本文主要是针对裸机的安装,而对于虚拟机的安装也类似甚至还更加简单。作者建议对于做嵌入式开发,个人觉得安装一个linux系统在你的裸机上会更好,一来速度更改,特别对于有大型工程要进行编译的(如qt)效果特别明显,而来现在ubuntu系统里面有足够多的软件满足你的开发需求。如果实在是离不开windows的话可以在你的linux系统里安装个虚拟机,在虚拟机里安装个windows系统,这样开发效率也会更高。呵呵、、、以上纯属个人理解。Windows粉丝绕道!

对于ubuntu14.04系统的安装主要分两步:

1、制作ubuntu14.04的系统安装盘,在此作者用的是一款universal-usb-installerU盘制作软件,就是将ubuntu14.04系统刻录到你U盘,待会从U盘启动安装系统就Ok了。对于这步大家可以各显神通。

2、磁盘分区

对于本人电脑硬件如下:i7处理器、8g内存、240g固态硬盘、1t机械硬盘。所以可用的空间比较大,毫无疑问系统肯定是安装在固态硬盘里。作者将240g的固态硬盘划分出40g挂载根目录(/)剩余的空间挂载家目录(/home,而对于机械硬盘划分了三个分区,两个300g分别用于挂载(/opt)与(/var)剩余的格式成了fat32格式。分区弄好之后接下来的工作就是按部就班的安装系统了。

1.2Ubuntu14.04系统设置

对于刚刚安装完的系统,我们可以进行一些个性话的设置,从而适合自己的开发习惯,在此作者列出自己习惯的几项设置仅供参考。

1、下载源设置

对于ubuntu系统来说没有网络是万万行不通的,所以安装完系统后的首要任务就是设置网络,对于ubuntu系统默认的下载源是在国外的服务器,这样一来下载速度可能会比较慢,所以作者习惯将它设置成国内的163服务器

2、屏幕亮度

对于作者本人来说喜欢屏幕亮度暗一些,一天到晚盯着屏幕看太亮了看的眼睛干。而对于ubuntu14.04的系统有一个bug,就是每次开机默认将屏幕亮度设置到最亮,所以需要自己手动进行一些设置,让系统每次起来设置一个你喜欢的屏幕亮度,具体的设置如下:

(1)打开/etc/rc.local脚本

(2)在该脚本exit0之前添加一下语句:

echo731>/sys/class/backlight/intel_backlight/brightness

这样每次系统开机会读取该脚本从而设置你想要的屏幕亮度。

3、设置terminal提示信息

Ubuntu终端提示信息默认情况下很长,而且还会随着我们进入的目录深度不断的加长,作者对此感觉很不好所以每次安装完系统之后我都要将PS1这个参数修改一下。具体操作如下:

1)打开家目录下的.bashrc脚本

2)将PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$'

改为PS1='[\u@\W]\$'

4、启动NFS服务器

5、停止NFS服务器

1.3Ubuntu14.04常用软件安装

对于刚刚安装完的系统还很不完整,还不能完成开发的需求,我们还得安装一些工具软件和一些库文件,这样也是我们之前设置网络的一个重要原因。下面作者列出嵌入式开发常用的一些库文件和软件工具以满足开发需求。

1.3.1输入法安装与设置

安装输入法之前我们的安装一个输入法管理工具,其主要的作用是管理我们在系统中安装的各种输入法,作者习惯用的输入法管理工具是fcitx。可以在终端上输入sudoapt-getinstallfcitx进行安装,安装完后可以在dash里面搜索fcitx可以看到一个小企鹅的图标,点击小企鹅就可以看到如下界面:

接下来就可以通过它对你系统里面现有的输入法进行管理了,软件的具体设置还是自己默默琢磨吧在此就不啰嗦了。

1.3.2常用小工具安装

(1)比较工sudoapt-getinstallmeld

(2)版本控制器sudoapt-getinstallqgit

(3)代码查看工具sudoapt-getinstallgeany

(4)文档编辑工具wps(官网下载)

(5)Svn图像界面sudoapt-getinstalllRapidSVN

(6)64位系统兼容32位应用需要安装的依赖库sudoapt-getinstalllib32z1lib32ncurses5lib32bz2-1.0libstd32c++6 ia32-libs

(7)sambasudoapt-getinstallsambasamba-commonsystem-config-sambapython-glade2gksu

(8)图形编辑能手sudoapt-getinstallgimp

(9)金山词霸sudoapt-getinstallstardict

(10)有道词典官网下载

1.3.3VBox安装

对于linux环境下要使用windows系统,那么在linux下安装个虚拟机在再虚拟机里面安装个windows是个不错的选择,而这个虚拟机作者选择的是vBox。对于vBox的安装可以直接apt-getinstallvirtualBox,也可以到官网上去下载你自己喜欢的版本。在虚拟机里怎么安装windows我就不罗嗦了,网上百度,教程很多。接下来想说一下的是vBox下要使用usb功能,众所周知,VirtualBox使用宿主机的USB设备需要安装扩展包。根据自己的vBox的版本,到vBox官网下载对应的扩展包,并安装,安装方法为:file-->prefrence-->extension进行安装,安装完后勾选"启用USB控制器""2.0控制器"增加对USB2.0的支持。接下来设置vBox所在的用户组在当前用户组下,设置如下:

1.查看当前用户名:

firephoenix@firephoenix-linux:~$whoami
firephoenix
2.查看vBox所在的组:

firephoenix@firephoenix-linux:~$cat/etc/group|grepvBox
vBoxusers:x:125:
3.将当前用户加入vBox组:

firephoenix@firephoenix-linux:~$usermod-a-GvBoxusersfirephoenix
4.查看vBox所在的组:

firephoenix@firephoenix-linux:~$cat/etc/group|grepvBox

/vBoxusers:x:125:firephoenix

此时,重启系统。再次打开虚拟机,果然,USB设备都已经被识别、访问到了。

1.4ADB的安装与使用

ADBandroiddebugbridge)作为android开发的必备调试工具可以加快我们的开发和调试过程,所以学会安装和使用ADB可以很好提高开发效率。对于ADB的安装包可到网上下载,下载完后你可以解压到任何目录下,对于ADB的安装就是一个解压过程。解压完后你就可以使用ADB的各种命令了,但是你必须在ADB的解压目录下运行,为了避免这种情况得将ADB的安装目录导出到环境变量中去。你可以在.bashrc或者.profile中添加导出命令如:exportPATH=$PATH:/opt/platform-tools。接下来你就可以在任何路径下输入adb-h检查你的ABD是否可以正常运行了。

ADB安装完后接下来就是要怎么使用了,使用ADB之前需要做一些设置,因为ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。

$lsusb查看usb的使用情况

经过对比插拔usb通过lsusb的打印信息可以知道新插入的usb设备位Bus003Device009:ID1f3a:1002Onda(unverified)而我们需要用到的信息就是1f3aidvendor1002就是idProduct。接下来在/etc/udev/rules.d/目录下新建70-android.rules(不知道这个文件命名有没有要求就按这个来吧总之这样命名是可以的),并在文件里面添加以下语句:SUBSYstem=="usb",ATTRS{idvendor}=="1f3a",ATTRS{idProduct}=="1002",MODE="0666"

保存后退出并设置一下权限

$sudochmoda+rx/etc/udev/rules.d/70-android.rules

一切准备工作做好之后就可以使用命令重启以下udev设备了

$sudoserviceudevrestart

这样一来我们的ADB应该就可以使用了,如果还是不行的话可以重启一下ADB服务。接下来查看ADB设备如下:


这样就说明一切OK了,接下来就是使用ADB的各种命令进行开发和调试了如:

$adbshell

$adbpush

$adbpull

1.5nfs配置

对于嵌入式开发通过nfs挂载会使得开发变得十分方便,通过挂载可以很方便代码的调试,PC机上交叉编译然后直接在目标机上运行。有了nfs你还可以挂载内核与文件系统,这样也很方便内核与文件系统的调试。既然nfs这么好用那么我们就来说说如何搭建和配置nfs服务器了。

1、安装nfs服务器sudoapt-getinstallnfs-kernel-server

2、建立一个nfs专用的文件夹mkdir/nfs

3、修改nfs配置文件sudovi/etc/exports作者的常用配置如下:

/nfs200.200.200.*(rw,sync)

/nfs192.168.1.*(rw,sync)

重启rpcbind服务sudo/etc/init.d/rpcbindrestart

重启nfs服务sudo/etc/init.d/nfs-kernel-serverrestart

挂载mount-tnfs-onolock200.200.200.99:/nfs/mnt

1.6Tftp

1.6.1tftp服务的安装

sudoapt-getinstalltftpd-hpatftp-hpa

1.6.2配置

sudovim/etc/default/tftpd-hpa

配置如下:

#/etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

#这个是工作目录记得将权限改为777

TFTP_DIRECTORY="/home/firephoenix/work/tftp"

TFTP_ADDRESS="[::]:69"

TFTP_OPTIONS="--secure"

然后重启tftpd-hpa服务sudoservicetftpd-hparestart

1.6.3本机测试

我的主机本机host地址:192.168.0.1

$cd/home/firephoenix/work/tftp

$echo"hellotftpservice">>a.txt#生成一个测试文件,在tftp文件夹下

#tftp192.168.0.1
tftp192.168.0.1
tftp>geta.txt
tftp>q

a.txt是否已经传输过来了,然后我们要检查一下他的内容,因为错误传输,也会生出一个同名空文件

$cd/home/work

#tftproot文件夹外做一个文件准备传进去

$echo"hellotftpservice,puttotftpserive">>send.text

#tftp192.168.0.1
tftp192.168.0.1
tftp>putsend.txt
tftp:send.txt:Nosuchfileordirectory
tftp>putsend.text
tftp>q


1.7openJDK1.7安装

1、安装JDK sudo apt-get install openjdk-7-jdk

2、安装JRE sudo apt-get install openjdk-7-jre

3、配置环境变量

环境变量一般在家目录下的.bashrc脚本中进行导出,如下:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export JRE_HOME=$JAVA_HOME/jre

export CLAsspATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLAsspATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存文件退出并执行source .bashrc使得脚本生效

4、检测是否安装成功

在终端中输入java -version查看打印信息,一般成功后打印下面java版本信息:

java versioin "1.7.0_95"

openJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.14.04.2)

openJDK 64-Bit server VM (build 24.95-b01,mixed mode)




0
0

相关文章推荐

Ubuntu14.04开发环境搭建的更多相关文章

  1. iOS版.使用USB麦克风录制96kHz

    我正在尝试使用我的RDEiXYUSB麦克风以96kHz的速度录制.录音没有错误,当我启动连接麦克风的应用程序时,我看到AVAudioSession以96kHz的采样率成功运行.但是,如果我看一下光谱,很明显除了20kHz以上的重采样噪声之外什么都没有:为了进行比较,这是使用与USB麦克风捆绑的应用程序进行相同录制的频谱:还有什么我必须做的,以原生96kHz录制?或者也许RDERec应用程序通过USB通过一些专有协议与麦克风通信,我在这里运气不好?

  2. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  3. cinder swift的区别

    [原]OpenStack入门以及一些资料之2014-4-29阅读1144评论0注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明。它拥有自己的文件系统,通过网络文件系统NFS或通用文件系统CIFS对外提供文件访问服务。Raid,不同的raid等级在增加数据可靠性以及增加存储器(群)读写性能间取得平衡。卷组描述区域,和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。

  4. OpenStack中Swift和cinder区别

    swift是objectstorage,将object存储到bucket里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。

  5. Swift属性观察者在协议扩展?

    换句话说,我可以观察协议扩展中的属性的更改吗?这并不意味着它是不可能实现的,但如果我们有这样的话可能会有点令人惊讶.

  6. 解决Swift 3中缺少递归协议约束的问题

    Swift3目前对“递归协议约束”有一个限制.有一个公开的问题here,在here,here和here有类似的讨论.但是,我仍然没有看到应该如何解决这个限制.可能吗?或者我需要开始引入较不严格的协议,直到在Swift中实现?会出现.然而,通过这种方法,我们可以得到正确的类型,而无需做很多专业化.当然,可以添加更多的协议来获得更多的抽象,但同样的解决方案将会适用.由于某些原因/语言缺陷,您必须在View.foo中分配委托时使用显式转换:viewmodel.delegate=selfas?

  7. android – 来自adb的’grep’命令的问题

    当我用adb写的时候:我得到错误输出:但如果我将它拆分为两个操作符:它工作正常.如果唯一的方法是将它拆分为两个–首先进入adbshell,然后运行Inquire,有一种方法可以从c#中执行此操作吗?

  8. android – 无法接收UsbManager.ACTION_USB_DEVICE_ATTACHED / UsbManager.ACTION_USB_DEVICE_DETACHED的广播意图

    或者告诉我如何检测广播意图是否有效,非常感谢.解决方法也许有点晚,但它可能会帮助别人.刚刚解决了检测USB设备插入的类似问题.事实证明–因为您在清单中指定了一个intent过滤器–当插入某些内容时,Android会调用onResume.您可以尝试添加以下内容:那么你也不需要在onCreate()中调用registerReceiver().还请记住,意图过滤器中的ID是十进制的.因此,您必须转换命令行工具所示的值.

  9. 检测Android设备何时分离

    我有一个Android应用程序,需要检测USB外围设备何时连接或分离.首次连接外围设备时它工作正常,但是当它随后被分离时,我没有收到任何通知(即,我没有收到动作为ACTION_USB_DEVICE_DETACHED的Intent).这是我的AndroidManifest.xml的相关部分:还可能值得注意的是,LauncherActivity仅在连接设备时启动服务,并在分离时停止服务.在任何一种情况

  10. Android VM不允许我们分配xx字节

    我正在开发一款安卓游戏.当我尝试使用3张图像作为背景时问题就出现了.图像为1280x720px和100kb大.图像真的不是那么大,所以我有点困惑,为什么它们应该导致内存问题.注意:屏幕分辨率为800×400,因此我无法通过因子2调整图像大小,因为它是suggestedonandroiddeveloper注意:我正在使用HTC欲望手机(这里崩溃来了),我也尝试过在三星galaxyS1和三星上运行正常

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部