Linux程序开发、编译过程相关的一些指令

一 GCC编译过程涉及到的指令


 gcc指令单独指令备注
预处理gcc -E hello.c -o hello.icpp hello.c > hello.i完成C语言源文件上的文件包含和宏置换
编译gcc -S hello.i -o hello.s或
gcc -S hello.c -o hello.s
ccl hello.c编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码部分。
汇编gcc -c hello.s -o hello.o或
gcc -c hello.c -o hello.o
as hello.s -o hello.o                汇编器将汇编代码转变成机器可执行的指令
链接gcc hello.c(默认链接)
gcc test.c  -L. -ltest -o main(动态库)
gcc main.c -lhello -L. -static -o main
(静态库)
a.c引用b.c的函数
gcc -c a.c b.c
ld a.o b.o -e main -o ab
-e main表示将main函数
作为程序入口
完成对目标文件的链接

二 GCC相关

    对于C语言,预编译和编译的程序是ccl;对于C++,对应的程序时cclplus;Objective-C是cclobj;fortran是f771;Java是jcl。所以gcc命令只是这些后台程序的包装,它会根据不同的参数要求去调用预编译及编译程序ccl、汇编器as、链接器ld。

(1)gcc安装的各个部分:


g++:c++编译器,链接时使用c++库
gccc编译器,链接时使用c库
cc1实际的c编译器
cc1plus实际的c++编译器
collect2使用collect2产生特定的全局初始化代码,后台处理是传递参数给ld完成实际的链接工作

crt0.o

初始化和结束代码
libgcc平台相关的库


gcc安装需要的文件:

gcc-core-3.4.6.tar.gz2  gcc核心编译器,默认只包含c编译器
gcc-g++-3.4.6.tar.bz2g++编译器
gcc-testsuite-3.4.6.tar.bz2测试套件
./configure && make && make install 

(2)binutils安装的各个部分

asgnu汇编工具
gprof性能分析工具
ldgnu链接器
makegnu的一款工程化编译工具,主要能够编译有较多关联关系的源代码文件,从而实现工程化的管理并提高效率
objcopy目标文件从二进制格式翻译或复制到另一种
objdump显示目标文件的各种信息
strings显示文件的字符串
strip去除符号表
readelf分析elf并显示信息


链接器可以读写各种目标文件中的信息,通过BFD(binary file descriptor)提供的工具实现,BFD定义了类似a.out, elf, coff等目标文件的格式。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值