一. 工具介绍
1.CC
编译器,对c源文件进行编译处理,生成汇编文件
2.AS
将汇编文件生成目标文件(汇编文件使用的是指令助记符,AS将它翻译成机器码)。
3.AR
打包器,用于路操作,可以通过该工具从一个库中删除或者增加目标代码模块
4.LD
链接器,为前面生成的目标代码分配地址空间,将多个目标文件链接成一个库或者是可执行文件
5.GDB
调试工具,可以对运行过程的程序进行代码调试工作
6.STRIP
以最终生成的可执行文件或者库文件作为输入,然后消除其中的源码
7.NM
查看静态库文件的符号表
8.Objdump
查看静态库文件的中符号表
二 . 编译器对比
正常编译一个程序的过程如下:
编译: gcc -c main.cpp ./libmad/mad_decoder.cpp -I ./libmad/include
打包: ar cr ../prebuilt/libmad.a mad_decoder.o
链接: g++ -o main main.o -L ../prebuilt -I media
在这个过程中,gcc、ar、g++是我们用到的三个编译工具,在这里没有用到的ranlib、gdb、nm、strip等都会包含在pc的编译器中。同样其它平台提供的交叉编译工具编译链中也会包含这些命令行工具,比如Android提供的NDK,其交叉工具编译链中的prebuilt/darwin-x86_64/bin中,就包含了对应的gcc,ar,g++,gdb,strip,nm,ranlib等工具
三. 常用配置
1.extra-cflags
在单独编写一个c或c++项目时,如果该项目需要引用到第三方库,那么编译阶段需要配置参数"extra-cflags,-I"来指定引用头文件的位置
2.ldflags
链接阶段需要配置参数“ldflags,-L”来指定静态库的位置,并且使用"-I"来指定引用的是哪一个库。
网友评论