gcc -E 能有效的帮助我们解决与宏有关的编译错误:
gcc -S能获得一个C源程序文件的汇编程序;
gcc -v能获得系统头文件的路径
生成依赖关系:
gcc -M
gcc -MM 生成不包含系统头文件的依赖关系
指定链接库:
gcc -L:告诉gcc可以从哪个目录查找库文件;
gcc -l :用于告诉gcc在生成可执行程序时需要链接的库名;
一、静态库生成步骤如下:
步骤一:生成 str_out.o 目标文件
gcc -c str_out.c
注:不加 -o 则生成同名的 *.o 目标文件(str_out.o),加上 -o 可以指定生成任意名的目标文件。
步骤二:生成 libstr_out.a 静态库,Linux规定静态库的命名规则一定是以 lib 开头且以 .a 结尾!
ar -crs libstr_out.a str_out.o
或
ar -cqs libstr_out.a str_out.o
addr2line 地址 -f -e 可执行程序:用于得到程序指令地址所对应的函数,以及函数所在的源文件和行号;
Linux存在两种库:
静态库:后缀是.a
动态库:后缀是.so
静态库与动态库的区别:
静态库:使用的库中的函数和数据会被拷贝到最终的可执行程序中
动态库:动态的加载到内存中当用到时候
静态库的生成:
ar crs libc.a foo.o main.o
静态库解压:
ar x libc.a
查看静态库里面包含的 内容:
ar t libc.a
删除库中的目标文件:
ar d libc.a foo.o
nm:符号显示器