Linux编程基础_笔记(2)
暂时跳过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常用选项:编译及警告信息控制选项
- -o选项。该选项指定gcc的输出文件名。
- -c选项。该选项让gcc只是将源代码编译为目标代码,输出.o文件。
- -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; }
采用命令```