小布gcc视频学习笔记

来源:互联网 发布:仙界网络直播间笔趣 编辑:程序博客网 时间:2024/05/21 03:16

把一个c文件编译成目标文件

gcc -Wall -c csource.c

 

编译多个c源文件,生成可执行文件

gcc -Wall s1.c s2.c ...sn.c -o exeutable

 

链接多个目标文件,生成可执行文件

gcc -Wall obj1.o obj2.o ... objn.o -o exeutable

 

带库编译,生成可执行文件

gcc -Wall main.c libname.a -o executable           (c文件和a文件顺序不能颠倒)

gcc -Wall main.o libname.a -o executable           (o文件和a文件顺序不能颠倒)

 

用指定目录下库编译链接main.c,生成可执行文件

gcc -Wall main.c /usr/lib/libm.a -o calc

gcc -Wall main.c -lm -o calc

 

用L指定库文件所在目录,用lhello指定名为libhello.a的库文件,生成可执行文件

gcc在编译时,会搜索L 指定的目录

gcc -Wall main.c -L. -lhello -o executable

gcc -Wall main.c -L/home/Wilson -lhello -o executable

 

用I指定头文件所在目录,并把源文件编译成目标文件

gcc -Wall -Iinclude -c main.c

 

ar工具的使用:

创建一个静态库

ar cr libName.a file1.o file2.o......filen.o

查看库中包含的目标文件

ar t libName.a

 

用不同c标准编译源文件,默认用gnu c标准

gcc -Wall -ansi ansi.c -o an         用标准c编译

 

gcc -W 的选项

-Wall              检测所有警告

-Wcomment   检测注释是否嵌套

-Wformat              检测格式

-Wunused       检测未用到的变量

-Wimplicit       检测未声明的变量

-Wreturn-type 检测函数返回值类型错误

#if 0   #endif        注释带有注释的代码

 

 

-D传一个名为TEST值为123的宏

gcc -Wall -DTEST=123 dtest.c -o dt

 

-E打印预处理结果

gcc -Wall -E dtest.c

 

-save-temp 保存编译过程中的临时文件

gcc -Wall -c -save-temps dtest.c

 

查看gcc预定义的宏

cpp -dM /dev/null

 

-g 把调试信息写入目标文件

gcc -Wall -g null.c

 

指定coredump文件大小

ulimit -c unlimited

 

用gdb调试

gdb a.out core.2297

 

用cpp预处理源文件

cpp hello.c > hello.i

用gcc处理hello.i,生成汇编语言文件hello.s

gcc -Wall -S hello.i

用as 处理hello.s 生成目标文件

as hello.s -o hello.o

调用ld,链接目标文件,生成可执行文件

gcc hello.o

 

file查看文件属性

file hello

nm查看一个可执行文件中simbol table,其中第二类中的T代表该函数在此文件中定义

nm hello

ldd查看可执行程序需要的动态链接库

ldd a.out

 

其他编译相关工具 gprof  gcov

原创粉丝点击