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








posted on 2013-10-08 15:56  展翅的小鸟  阅读(934)  评论(0编辑  收藏  举报

导航