1.Linux内核定制:可以更改
2.Linux发行版本:不能更改
3.编译过程中,顶层的Makefile文件有选择的递归调用内核源代码中子目录的Makefile文件,选择的依据是用户配置文件.config
4.shell程序设计-bash是Linux默认提供的shell解释器
#!/bin/bash 解释器的路径
# a Simple shell Script Example 脚本解释语句
function say_hello() 定义函数
{
echo -n"Enter Your Name,Please.:"
read name
echo"Hello $ name"
}
echo "Programme Starts Here..."
say_hello
echo"Programme Ends"
将文件保存为greeting.sh
这时文件还不能执行,需要执行
chmod +x greeting.sh 赋予可执行的权限
具备权限后,就可以调用文件名执行了
5.变量的声明和使用
变量=值,等号两边不能有等号
a="hello"
变量前需要加一个”$“echo "a is $a"
$ var="hello"
$ echo $var $ { title: - "somebody" }! # - 如果title存在,则返回title 。否则返回somebody
$ echo $var $ { title: + "somebody" }! #如果title存在,则返回title,否则返回null
$ echo $var $ { title: ? "title is null or empty" }! #如果title存在,则返回title 否则输出错误信息,退出shell,此时的value作为一个错误提示消息
$ echo $var $ { title: = "tom and jerry" }! #如果title存在,则返回title,否则将字符串赋值给title然后返回字符串的值
6.expr arg计算一个表达式的值,并将结果写在标准输出设备上expr 3+2
7.操作数和运算符之间要有空格,比如+要与左右两侧的数字以空格隔开
8.表达式里有通配符时,需要转义。\ * 或者 ” * “或者‘ * ’
9.let命令类似于expr
10.test [condition] 左右中括号与condition之间需要加空格
-f fn 如果fn存在且为普通文件,则返回真
-b fn 如果fn存在且为块设备,则返回真
-e fn 如果fn存在则返回真
-d fn 如果fn存在且fn为目录,则为真
-r/w/x fn 可读/可写/可执行 ,则为真
-O fn 如果fn存在且被当前用户拥有,则为真
-L fn fn为符号链接,则为真
echo $? ?储存紧邻的前驱命令
11.控制结构
1)if 分支语句
if [condition]
then
elif [condition]
then
fi 终止
2)case 分支语句
case 条件 in
(模式1) 命令1;;
(模式2) 命令2;;
(模式3) 命令3;;
esac 终止
3)for 循环语句
for 变量 in [列表]
do
命令
done
#!/bin/bash
# an example script of for
clear
for os in Linux Windows Unix
do
echo"Operation System is:$ os"
done 遍历输出Linux Windows Unix
4)while和until循环语句
while/until 条件
do
命令
done while的条件为真,则执行命令,until的条件为假,则执行命令
12.函数
[function] 函数名() 括号内必须为空,不能加参数
{
命令
}
$0 执行脚本的函数名
$1 传递给函数的第一个参数
$2 传递给函数的第二个参数
$n 传递给函数的第n个参数
$# 传递给函数的参数个数
$ *传递给函数的所有参数,作为一个整体传递
$ @传递给函数的所有参数,作为拥有多个参数的集合传递
shift 命令用于将存储在位置的变量左移一个位置
13.一个c/c++程序从开始编码到生成可执行的二进制文件至少要经历4个步骤:
- 预处理 —预处理文件(#define)
- 编译 —生成汇编程序文件
- 汇编 —机器指令(目标文件)
- 链接 —可执行文件v
14.gcc的使用
-o file 结果存为文件file
假设被处理的源文件为source.suffix , 如果这个选项被忽略,那么被生成的可执行文件默认名称为a.out ;目标文件默认为source.o;汇编文件默认为source.s生成的预处理文件发送到标准输出设备
-c 仅对源文件进行编译,不链接生成可执行文件
-g [gdb] 在可执行文件加入调试信息,如果使用中括号,表示加入gdb扩展的调试信息
15.预处理指令include,define
$ gcc -E hello.c - o hello.i -E表示GCC在生成预处理文件后停止 -o 指定生成的目标文件为hello -S 在生成汇编文件后停止 -c在生成目标文件后停止
16.gcc文件扩展名规范
.c为后缀的文件,C语言源代码文件;
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.ii为后缀的文件,是已经预处理过的C++源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件。
分别编写 greeting.h greeting.c my_app.c 将greeting.h 和greeting.c放在目录function中
$ gcc my_app.c function/greeting.c -o my_app -I functions
因为my_app.c 引用的头文件 不在同当前目录中,也不在GCC默认的搜索路径(/user/include)中,所以 -I 之后加上一个路径,方便搜索头文件
$ gcc -c my_app.c -I function
$ gcc -c function/greeting.c
$ gcc my_app.o greeting.o -o my_app
前两条文件将输出文件编译成目标文件,处理过后,生成后缀名为.o的目标文件。第三条命令将两个文件链接起来,成为可执行文件
17.makefile 生成程序—可以通过makefile文件,声明函数依赖项进行编译,后期更实用的makefile文件,用变量分别储存函数的依赖项
18.错误是可以传递的
19.程序和服务器之间需要通过规范的协议来通信
20.GTK+由4个库组成:
- Glib:GTK+和GNOME的底层核心库
- Pango:处理界面布局和国际化的库
- Cairo:支持多输出设备的2D图形库
- Atk:提供一些其他功能的接口
21.Qt提供了一种Linux下开发图形界面应用程序的解决方案
Qt可以在多种平台上运行:X11系统,Windows系统,Macintosh系统:MacOS
Qt的图形界面库是在Xlib基础上的封装与抽象