Chinaunix首页 | 论坛 | 博客
  • 博客访问: 561021
  • 博文数量: 105
  • 博客积分: 3274
  • 博客等级: 中校
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 12:14
文章分类

全部博文(105)

文章存档

2011年(1)

2010年(104)

分类: LINUX

2010-03-26 22:21:05

在制作根文件系统的过程中,总是编译不过去,已经2个晚上了,不是这里出问题就是那里出问题,于是准备再打下基础。
linux编程环境
比较重要但是自己又不常用的命令:
建立文件的符号链接:ln [-s] [源文件] [目标文件]
加了选项-s就是软链接,没有选项-s就是硬链接。
改变文件/目录访问权限
chmod [xyz] 文件
其中x,y,z各为一个数字,分别表示User、Group、及Other对于该文件的使用权限。对于文件的属性,r=4,w=2,x=1。
改变文件/目录的所有权
chown [-R] 用户名 文件/目录
例如
#chown zhh file1
将当前目录下的文件file1改为用户zhh所有
选项-R可以递归目录下的文件
比较重要的2个命令就是diff和patch(很惭愧,我很少用到,patch用的多点)
diff [命令行选项] 源文件 新文件
常用选项
-r:递归处理相应目录
-N:包含新文件到patch
-u:输出统一格式
-a:可以包含二进制文件到patch
patch [命令行选项] [patch文件]
最常使用的选项就是-p1,代表patch文件名左边目录的层数。要使用这个选项,要把patch文件放在要被打补丁的目录下,然后在这个目录中运行patch -p1 < [patchfile]
我们常常会见到./configure这个命令,是用来配置的,我们常常会见到./configure这个命令,是用来配置的,
--prefix,可以指定软件的安装目录。
--target 指定交叉工具的目标板体系结构
--with-headers指定内核头文件所在路径
--disable-shared 指定不使用共享库
--disable-threads指定不使用线程
--enable-language指定支持的语言
 
下面来看看编写shell脚本
1,建立脚本
一般来说Bash脚本以“#!”开头,并且后面同时要将所使用Shell的路径明确指出,比如:
#! /bin/sh
 
 
gnu binutils工具介绍
我们在linux下用的最多可能就是gcc,其实下面这些也用的很多,只不过我们不用管罢了。
as GNU的汇编器,主要用来将汇编语言编写的源程序转换成二进制形式的目标代码。Linux标准汇
编器是GAS
ld GNU的链接器,由汇编器产生的目标代码是不能直接运行在计算机上的,它必须经过链接器的
处理才能生成可执行代码,链接是创建一个可执行程序的最后一个不走,ld可以将多个目标文件链
接成为可执行程序,同时指定了程序在运行时是如何执行的。
gcc编译过程
预处理----》编译----》汇编----》链接
gcc首先用cpp命令进行预处理,主要是对源代码编译前的预处理,接着调用ccl命令来进行编译,
然后调用as生成扩展名为.o的目标文件,当所有目标文件生成后,调用ld完成链接。
gcc 常用编译选项
-c 仅把源程序编译成目标代码
-S 会生成一个后缀名为.s的汇编语言文件
-e 只对文件进行预处理
-V 显示gcc版本
-I选项:库依赖选项,指定库及头文件路径
-o 生成可执行文件
 
Makefile
通常情况下GNU Make的工作流程如下
(1)查找当前目录下的Makefile文件
(2)初始化文件中的变量
(3)分析Makefile中的所有规则
(4)为所有目标文件创建依赖关系
(5)根据依赖关系,决定哪些目标文件要重新生成
(6)执行生成命令
make工具有一些特殊的内部变量,它们根据每一个规则内容定义。
$@指代当前规则下的目标文件列表
$<指代依赖文件列表中的第一个依赖文件
$^指代依赖文件列表中所有依赖文件
$?指代依赖问价列表中新于对应目标文件的文件列表
一般来说,Makefile文件中变量的应用主要有以下几个方面。
(1)代表一个文件列表
(2)代表编译命令选项
 
 
待续---
阅读(910) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~