暂时跳过Linux常见命令和VI操作,因为目前掌握的已经够平时的使用了。

POSIX标准和LSB标准

POSIX规定了各种类Unix操作系统应该遵循的接口规范。
图片说明

LSB是为了保证不同Linux发行版本间应用程序的可移植性。
图片说明
图片说明

Gcc的使用

图片说明

查看gcc版本应该是gcc --version
图片说明

比较基础的知识:gcc执行C程序的过程。
图片说明

图片说明

GCC常用选项:预处理控制

写了下面这样一段C程序,通过gcc -E hello.c可以在屏幕上输出预处理的信息。
图片说明
图片说明

gcc -D DEBUG -o hello hello.c

图片说明

gcc -D DEBUG=0 -o hello hello.c
图片说明

GCC常用选项:编译及警告信息控制选项

  1. -o选项。该选项指定gcc的输出文件名。
  2. -c选项。该选项让gcc只是将源代码编译为目标代码,输出.o文件。
  3. -S选项。该选项让gcc只对源程序进行编译产生后缀为.s的汇编语言文件。
    图片说明

gcc -E -o hello.i hello,把预处理得到的结果存储在hello.i里面。
图片说明

图片说明

GNU中GCC使用的汇编语言格式是AT&T。
图片说明

对于可执行的.o文件,因为是二进制文件,不可以直接查看,但可以通过nm命令查看。
图片说明
图片说明
图片说明

GCC常用选项:C语言标准控制选项和程序调试及优化选项

图片说明

图片说明

-Os选项,该选项对代码的大小进行优化,使得所生成的代码长度最小化。
-Og:该标识会精心挑选部分与-g选项不冲突的优化选项,当然就能提供合理的优化水平,同时产生较好的可调试信息和对语言标准的遵循程度
-O3选项:该选项除了执行-O2所有的优化选项之外,一般都是采取很多向量化算法,提高代码的并行执行程度,利用现代CPU中的流水线,Cache等。
图片说明

GCC常用选项:搜索路径控制和GCC链接选项

写这么一段C程序,gcc -o hello hello.c之后会发现报错。sin没有找到,在windows下编程的时候,IDE会自动的帮助我们完成链接的过程,但是在linux命令行下,需要手动的去链接。
图片说明
图片说明

其实一般情况下是不需要去手动链接库的,但是数学函数需要去手动的链接以下动态库。
图片说明
图片说明

可以查看centos7.4发行版本Linux操作系统下的C标准库函数。
图片说明

图片说明

gcc链接有关的一些参数。
图片说明
图片说明

利用GCC创建库文件

关于动态库和静态库。
图片说明
图片说明

在Java和Python中都有import模块,Python有pip包管理工具,Java可以用Maven做包管理,但是在Linux下的C/C++开发中,复用别人的代码需要链接动态库或者是静态库,自己手动的以一种比较麻烦的方式完成别人代码的复用。

GCC创建静态库文件方法。
图片说明
图片说明
图片说明

写了如下的一段C程序打算测试如何链接自己生成的libmycalc.a。

#include <stdio.h>
#include "calc.h"

int main(int argc, char* argv[]) {
    double v1, v2, m,sum2;
    v1 = 3.2;
    v2 = 8.9;
    m = aver(v1, v2);
    sum2=sum(v1,v2);
    printf("%f %f\n", m ,sum2);
    return 0;
}

采用命令```