学习笔记-Linux系统编程

每天一个linux命令


GCC的使用:

  1. gcc 支持编译的一些源文件后缀名
后缀源文件
.cC语言源文件
.C .cc .cxxC++源文件
.mObject-C源文件
.i经过预处理后的C源文件
.ii经过预处理后的C++源文件
.s .S汇编语言源文件
.h预处理文件(头文件)
.o目标文件
.a存档文件
  1. gcc 编译程序的流程

    源文件 -> 预处理 -> 编译 -> 汇编 -> 链接 -> 可执行文件

    修改文件权限:

$ chmod (u/g/o)(+/-) filename

例如,chmod u+x test.out,这样test.out的拥有者就获得了test.out的执行权限

  1. 用 gcc 编译一个经典 C 程序

  2. gcc 到底背着我们做了什么

  3. 用 gcc 编译模块化的程序

    //略


GDB 的使用

  1. gdb 概述

    gdb是GNU开发组织发布的一个强大的UNIX/Linux下的程序调试工具。或许,有人比较习惯图形界面方式的,像VC、BCB等IDE环境,但是在UNIX/Linux平台下做软件,gdb这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,gdb主要帮忙用户完成下面4个方面的功能:

    • 启动程序,可以按照用户自定义的要求随心所欲的运行程序
    • 可让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。
    • 当程序停住时,可以检查此时程序中所发生的事。
    • 动态地改变程序的执行环境。

    从上面来看,gdb和一般的调试工具区别不大,基本上也是完成这些功能,不过在细节上,会发现gdb这个调试工具的强大。

  2. 使用 gdb

    gdb主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数即可。如:

$ gcc -g hello.c -o hello

接下来就可以用gdb打开这个可执行文件:

$ gdb hello

Makefile 的使用

  1. Makefile 概述
    通过合理有效的划分,将一个项目分解为多个易于处理的文件。
    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作(因为makefile就像一个shell脚本一样,可以执行操作系统的命令)。
    makefile带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。make是一个命令工具,是一个执行makefile中命令的工具程序。

  2. Makefile 基本规则
    首先$ vim Makefile :

test: prog.o code.o
        gcc prog.o code.o -o test
prog.o: prog.c code.h
        gcc -c prog.c -o prog.o
code.o: code.c code.h
        gcc -c code.c -o code.o
clean:
        rm -f *.o test

有了这个Makefile,不论什么时候修改源文件,只要执行一下make命令,所有必要的重新编译将自动执行。make程序利用Makefile中的数据,生成并遍历以test为根节点的树。

  • Makefile的一般写法:
    • test(目标文件): prog.o code.o(依赖文件列表)
    • tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
    • ……
$ make
gcc -c prog.c -o prog.o
gcc -c code.c -o code.o
gcc prog.o code.o -o test

还记得Makefile中的clean吗? make clean 就会去执行rm -f *.o test 这条命令,完成 clean 操作。

  1. 使用带宏的 Makefile

    • 定义宏的格式为:macroname = macrotext
    • 使用宏的格式为:$(macroname)

    例如:

OBJS = prog.o code.o
CC = gcc
test: $(OBJS)
        $(CC) $(OBJS) -o test
prog.o: prog.c code.h
        $(CC) -c prog.c -o prog.o
code.o: code.c code.h
        $(CC) -c code.c -o code.o
clean:
        rm -f *.o test

文件IO:

  1. 文件 I/O 介绍

    Linux中的应用编程接口(API)遵循了UNIX中最流行的应用编程界面标准——POSIX。这些系统调用编程接口主要是通过C库(libc)实现的。

    使用Linux操作系统向用户程序提供的API(应用编程接口),访问OS内核提供的服务(包括文件I/O)

  2. 基本 API

    (1).open
    需要包含的头文件:<sys/types.h>, <sys/stat.h>, <fcntl.h>

    函数原型:
    int open(const str * pathname, int oflag, [..., mode_t mode])
    功能:打开文件 返回值:成功则返回文件描述符,出错返回-1 参数:

    (2).read
    //TODO
    (3).write
    (4).close
    (5).lseek


Linux 命令


本文整理自:实验楼:Linux系统编程

硬广!!!:点我注册 奖励实验豆3枚 ^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值