Embeded Linux使用中的经验总结 时时更新
从暑假开始看关于Linux的书,中间还花了点时间找了工作,到现在大概也有好几个月的时间了。总是会断断续续的进行着。。发现一些东西之前使用的时候还记得,但是后来再次碰到的时候还是要上网进行搜索,所以还不如记下来,以后先到这里来进行寻找,方便又实用
##History 2013/10/08 update
1.secureCRT和cuteFTP的使用是不需要VMWare和Windows在一个网段的。基本上能ping通,并且支持ftp和ssh,基本上都是可以进行连接的
2.NFS的使用是需要VMWare的桥接模式,而不能使用NAT模式。我试验的结果是ubuntu能ping通开发板,但是开发板不能ping通ubuntu,所以需要使用Bridge
貌似是因为NAT只支持单向ping通
3.利用NFS进行ubuntu与开发板的共享中,是需要在开发板的命令行输入中输入挂载nfs命令,命令如下:
mount -t nfs -o nolock <ubunut IP>:<ubuntu的共享目录> <开发板的共享目录>
上面的语句是在开发板的命令行中进行输入,我用的工具是DNW,不是在ubuntu中进行挂载。而是把ubuntu中的共享目录挂载到开发板的Linux上
4.makefile的一些规则是需要掌握的。。至少能看懂和进行一些基本的更改!其中我犯过的错误是在目标文件跟后面的依赖文件的中间的冒号上
如: main: main.o a.o
<Tab>arm-linux-gcc -o main main.o a.o
其中上面的冒号要紧跟着目标文件,中间不能有空格! 其他的就是 命令行的前面必须是Tab键
5. uboot中的重要的两个文件就是顶层文件中的Makefile和mkconfig... 理解看懂mkconfig有一定的好处
6. Makefile中经常用到的一个命令应该是export.这个指令的说明在鸟哥的书中有很好的说明。主要是将自定义的变量转为环境变量,从而方便父进程也可以直接进行使用。
7.交叉编译工具arm-linux-gcc不需要编译,直接进行解压即可。但是::::需要对环境变量进行更改。否则不怎么方便使用(除非你cd到你的安装目录的bin下)
8. 对于软件的安装,一般可以直接看INSTALL文件,不用每次碰到一个软件,第一个想法就是上Google,这不是一个好的习惯。看鸟哥的书,就会有很好的理解
9.deamon还是要理解好。有个比较清楚的概念性的理解对于一些问题是有帮助的
10 . 有时候可能会出现apt-get install的时候无法进行软件的安装,可以尝试先进行apt-get update进行更新。一般就可以继续使用apt-get install
Continued.........
#History 2013/10/11
1. vim中显示行号一般会比较容易进行查找,并且在一些日志文件中,一般会有行号的信息。所以有时vim中的行号显示是必要的。
一般新建~/.vimrc 里面编辑set nu即可显示行号
2. cd is a shell built-in command. It cannot be run in a child process. The child process simply cannot change the working directory of its parent shell process.
即 cd是内嵌指令,可以通过输入type cd进行查看。但是一般cd指令不能运行与子进程中。即子进程中的cd不能改变父进程中的路径。从而 sudo cd 一般会提示command not found
3. 注意grub2,还有其对应的文件/boot/grub/grub.cfg
4. 以下是关于ac_nonexistent.h: No such file or directory错误的gnu解释:
Re: What is "ac_nonexistent.h"?
From: | Eric Blake |
Subject: | Re: What is "ac_nonexistent.h"? |
Date: | Mon, 07 Mar 2011 07:44:59 -0700 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Mnenhy/0.8.3 Thunderbird/3.1.7 |
On 03/07/2011 04:42 AM, ?????? wrote: > Hi, guys. > I'm new to Autoconf. > Recently I wrote an very, very simple example of using autotools. The example > worked OK(all worked OK, including generated Makefiles). But when I added > macro AC_CHECK_HEADERS([...]) and it went well to generate configure shell > script. > So I ran ./configure, it's OK! Still I checked config.log, and found there is > an error showing: > "error: ac_nonexistent.h, no such file or directory." > ... > "Compilation terminated." > Fortunately that is the only error which appeared several times in the > config.log file. That's a _good_ thing. We _expect_ that compilation error, to prove that we are correctly detecting how your compiler detects and rejects broken source code that refers to a non-existent header (knowing how the compiler detects missing headers is essential for later tests of AC_CHECK_HEADERS to see which headers are present). Not all failed compilations are bugs. -- Eric Blake address@hidden +1-801-349-2682 Libvirt virtualization library http://libvirt.org
###history 2013/10/18
1. Ubuntu中通过apt-get install对一些软件进行安装我想是非常方便的,但是当然也就少了一些不必要的麻烦,比如进行源码编译进行安装中可能会出现一些error。。。但是只有这些error才能锻炼一个人的解决问题的能力,才能从实践中获得知识。所有有时候还是用源码进行安装时比较好的选择
2. 安装后的日志文件是比较重要的信息获取的载体。解决问题一般可以直接通过相应的日志文件进行解决。。。经验来自于QTopia的移植中。。。
3. 通过 ps aux | grep xxx 进行进程的查看。通过 kill PID 对某个进程进行kill。
#history 2013/11/4
1. ubuntu中采用APT对软件进行管理APT = advanced package tool
apt在man中的解释如下:
APT is a management system for software packages. For normal day to day package management there are several frontends available, such as aptitude(8) for the command
line or synaptic(8) for the X Window System. Some options are only implemented in apt-get(8) though.
通过apt-get install进行软件的安装时,软件是来自一个固定的软件源的。一般的软件源是默认的ubuntu的,但是其实可以自己对软件源进行设置,这样就可以避免一些外网不能上或 者网速太慢的问题。国内有很多的镜像网站,如上交,北大,东北大学都有。
但是如果想要看到利用apt安装的软件的源码的时候,是可以通过apt-get source ???进行下载软件的源码的。
如: sudo apt-get source busybox 具体参考 http://blog.csdn.net/yuanlu837/article/details/7750492
还可以利用sudo apt-cache showsrc xxx 或者 sudo apt-cache showpkg xxx 来查看是否有源码包或者安装软件的一些相关的信息,如依赖关系
2. Ubuntu中一般不需要杀毒软件,但是可以在ubuntu中装个杀毒软件对win下的文件进行杀毒是个很好的选择。。。推荐使用avast! 现在win下我也用的他!
3. busybox开源免费,可以作为一个很好的学习工具。当然在嵌入式里面,busybox还是很有用的。配置方式类似于Linux内核的配置
4. dnw在Linux下也提供了源码。可以在Linux下通过dnw利用USB对ARM板进行烧写操作。其中secbulk是USB的驱动程序。
但是在我费了好大的劲使用后,终于发现secbulk在进行一次烧写后,就会出现can not open /dev/secbulk0的error。。。发现在/dev下就找不到这个设备文件了,而不是由于权限的问 题,因为我用的是sudo,此时通过lsusb指令也找到Samsung的USB端口。。。
目前的解决办法是没进行烧写一次后进行重启reset,这样就会在/dev下再次出现secbulk0设备文件。才会不出现can not open /dev/secbulk0的error
5. 对于普通账户和root账户的使用,一般推荐使用普通的账户,但是有时候会出现必须要用root才能解决问题的时候。比如apt-get ,有时候的make 和make install
此时,就会出现一些比较郁闷的问题了。比如PATH问题,就需要注意。我找了半天才发现问题
普通账户的path和root账户的path是不一样的。所以有时候在用root账户时或者用sudo进行root时会发现一些奇怪的问题。
比如此次我的问题是: make的时候发现arm-linux-gcc command not found。
但是arm-linux-gcc是分明安装好了的。arm-linux-gcc --version也没有任何问题。
但是正因为sudo make 的原因,导致make的时候用的是root的PATH,而不是普通权限的PATH,所以此时在
root的PATH里面是找不到arm-linux-gcc的。解决方法是export PATH=$PATH:/your path