while循环注意的事项
这个while
循环比较蛋疼的是空格。使用的括号为中括号,括号和变量之间必须有空格,变量和比较符号之间也必须有空格,格式如下:
#!/bin/bash
Passwd=666666
echo 猜一下密码!
echo -n 输入密码:
read guss_passwd
while [ "$Passwd" != "$guss_passwd" ]
do
echo 错误密码!
echo -n 输入错误,请重新输入:
read guss_passwd
done
echo 恭喜你,输入正确!
exit 0
Linux C程序设计中的几个关键问题
- 头文件:几乎所有的C语言的头文件都放在/usr/include及其子目录下,如
stdio.h
,stdlib.h
等文件; - 静态函数库:以
.a
结尾,如/usr/lib/libc.a
是标准的C语言函数库 - 使用静态函数库有个问题,就是当很多程序都要用到某一个函数库的函数时,必须为每个程序都要复制一份同样的函数,浪费空间。因此,共享函数库解决了这一问题,Linux系统中,共享函数库存放在
/lib
中,典型的Linux中可以找到/lib/libc.so.N
,N为主版本号。它是在程序运行时动态加载的,有点像.dll
文件 - Linux下的文件名含义:
文件名类别(后缀名) | 描述 |
---|---|
.a | 由目标文件构成的档案库文件 |
.o | 编译后的目标文件 |
.i | 经过预处理后的C的源代码文件 |
.ii | 经过预处理后的C++的源代码文件 |
gcc编译器的使用
语法:gcc [选项] 文件列表
- 选项 -o:用于指定生成的可执行文件的名字,而非默认的a.out,即如果不加-o选项,默认的可执行文件名称为
a.out
,常用的gcc选项:
选项 | 描述 |
---|---|
-l | 连接库文件 |
-m | 根据给定的cpu类型优化代码 |
-o | 指定可执行文件名称 |
-O[级别] | 根据给定的级别(0-3)进行优化,数值越大,表明优化程度越高,级别0(默认)表示不优化 |
-c | 只激活预处理,编译和汇编而跳过链接,生成目标文件(.o) |
-static | 禁止使用动态库 |
ar工具的使用
ar工具用于创建和修改库文件,它可以把指定的目标文件添加到库文件中(经过测试,发现直接添加源文件如.c
也可以),库文件(又称归档文件)的名称必须以.a
结尾,使用语法(关键字前面的-
可加可不加):
ar 关键字 文件名 [文件列表]
创建库文件的示例:ar r test_lib.a compute.o input.o
使用gcc连接库文件的实例:gcc main.c test_lib.a -o sqrt -lm
使用关键字q
可以向库文件中添加其他的目标文件:ar q test_lib.a other.o
,
把当前目录下所有目标文件添加到test_lib.a中:ar r test_lib.a *.o
,如果test_lib.a不存在,则创建test_lib.a
显示库文件内容:ar t test_lib.a