linux基础学习

vim
命令移动 hjkl


gcc 
-o 生成的名字
-I./include 头文件目录
-D DEBUG 指定宏
-O 优化程序(+1,2,3)
-Wall 输出警告信息
-g 添加调试信息(gdb) 文件变大
-E 生成预处理文件  .i文件
-S 生成汇编文件(编译)  .s文件
-c 二进制文件      .o文件
gcc *.o -o test    test为可执行文件 test.out
-L 指定静态库的目录


                                           
制作静态库 






打包.o文件
lib + name + .a
ar rcs + name(*.a) + all(.a)
头文件体现接口
不指定-o就是.c变成.o文件
例如 : ar rcs lib.a *.o
mv fileMame 目录
用户只有include 和 lib *.h里只有接口
静态库调用 
1.   gcc main.c lib/*.a -o name
2.   gcc main.c -Iinclude -L lib -l+库的name(掐头去尾) -o myapp
   lib里的库 libMyCalc.a -> MyCale
   nm *.a 查看库
可执行程序只打包需要的.o库文件
发布程序不需要提供对应的库,速度快.体积大,库发生了改变需要重新编译程序.


共享库(动态库)(win *.dll)



不被打包到可执行程序中
lib + name + .so
生成与位置无关的.o gcc -fPIC -c *.c
gcc -shared -o libMyCalc.so *.o -Iinclude
libMyCalc.so为动态库
使用:
    gcc main.c lib/libMyCalc.so -o app -Iinlude
    gcc main.c -Iinclude -L./lib -lMycalc -o myapp

ldd 查看可执行文件所有依赖的动态库
ldd myapp


.bss 未初始化的全局变量
.data 已经初始化的全局变量



ps aux | grep xxx
a 用户
u 显示进程所属用户
x 没有终端的进程
| 指令一的输出作为指令二的输入


kill -l 查看信号
kill -SIGKILL 5179
kill -9 5179


ssh 192.168.40.119@he


tar压缩解压
c 创建
x 解压
v 显示提示信息
f 指定压缩文件的名字


必须使用z或者j
z 使用gzip方式 .gz
j 使用bizp2方式 .bz2


tar zcvf xxx.tar.bz2 +目录文件


gdb
gcc -g
gdb 文件名字
list 行号
list 文件名:行号(函数名)
设置断点:
b 行号
b 文件名:行号(函数名)
设置条件断点:
b 行号 if value == 23
查看断点信息:
info b
删除断点:
d 断点编号
调试
只执行一行代码 start
继续执行 continue -- c
直接停在断点处 run -- r
单步调试 
进入到函数体:step -- s
跳出函数体: finish
不进入函数体: next -- n
追踪变量:
自动打印变量的值 dispaly 变量名
取消变量的追踪 undispllay 编号
获取编号 info display
手动打印变量的值 print -- p
获取变量的类型 ptype
跳出循环 u
退出gdb quit


open
打开文件
open("hello.c", O_RDWR);


创建文件
open("myhello", O_RDWR|O_CREAT, 0777); //权限是八进制数字
umask 022


判断文件是否存在
open("myhello", O_RDWR | O_CREAT|O_EXCL, 0777);


将文件截断为0
open("myhello", O_RDWR | O_TRUNC);


lseek
获取文件大小
lseek(fd,0,SEEK_END);


文件拓展
lseek(fd, 2000, SEEK_END);
实现文件拓展,在做一次写操作
write(fd, "a", 1);

空洞文件的用处

通过指定相对于开始位置、当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置
函数原型:
#include <sys/types.h> 
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
参数说明:
fd:文件描述符
offset:偏移量,该值可正可负,负值为向前移
whence:搜索的起始位置,有三个选项:
(1).SEEK_SET: 当前位置为文件的开头,新位置为偏移量大小 
(2).SEEK_CUR: 当前位置为文件指针位置,新位置为当前位置加上偏移量大小 
(3).SEEK_END: 当前位置为文件结尾,新位置为偏移量大小
返回值:文件新的偏移值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值