Sunplus DVD软件Makefile详解(一)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
预备知识--GNU工具链
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
Pre-processor |
Compiler (cc1 / |
Assembler (as / |
Linker (ld) |
GNU工具链的组成
l GCC——GNU Compiler Collection
l Binutils——GNU binary utilities
l Glibc——GNU C Library
GCC:
l 功能:
2 高级语言(.c;.cpp;…)-> 汇编语言(.s)
l 组成:
2 cpp、gcc、g++…
2 cpp0、cc1、cc1plus …
2 libgcc.a…
Binutils:
l 功能:
2 汇编语言(.s) -> 目标文件(.o) -> 可执行程序
2 查看二进制文件信息
l 组成:
2 as、ld
2 objdump、readelf、strip、ar、nm …
Glibc:
l 功能:一组可执行程序
2 提供语言和操作系统的标准库函数
l 组成:若干可执行程序 + 大量库
2 ldd、iconv、locale…
2 ISO C、POSIX、UNIX、GNU
GNU工具链的工作流程
扩展名的默认含义
l 需要预处理的源代码:.c、.cc ……
l 不需预处理的源代码:.i、.ii ……
l 需要预处理的汇编代码:.S
l 不需预处理的汇编代码:.s
l 目标文件:.o
l 静态库:.a
l 动态库:.so
常用工具的用法
l gcc/g++ [options] file...
编译器
2 -Wall
打印警告信息
2 -g
添加调试信息到输出文件
2 -O -O0 -O1 -O2 -O3 -Os
优化选项,若有多个则最后一个有效
2 -D -U
定义和取消宏定义
2 -msoft-float
使用软件库(libgcc.a)模拟硬件浮点指令
2 -I
指定头文件搜索路径,若有多个则从前往后搜索
2 -L
指定库搜索路径,若有多个则从前往后搜索
2 -l
指定引用的库,从当前位置向后搜索
2 -E
输出预处理后的文件(.i、.ii 等)
2 -S
输出编译生成的汇编文件(.s)
2 -c
输出汇编生成的目标文件(.o)
2 -o
指定输出文件名
l as [option...] [asmfile...]
汇编器,可由gcc -c代替
l ld [options] file...
连接器,可由gcc代替
as和ld通常都是由gcc调用,一般不直接使用。
l objdump [option(s)] [file(s)]
反汇编各种格式的目标文件和可执行程序
2 -d
只反汇编代码段
2 -D
反汇编代码段和数据段
2 -S
混合输出源代码和汇编代码,编译时必须加-g选项
2 -s
显示指定段的完整内容
l readelf [option(s)] elf-file(s)
显示ELF格式文件信息
2 -e
显示头信息,包括ELF file header、section header、program header
2 -s
显示符号表信息
2 -r
显示重定位信息
2 -a
显示所有信息
l strip [option(s)] in-file(s)
删除输入文件的符号表和指定的section
2 -o
指定输出文件名
l ar
管理归档文件(*.a)
2 -d,-m,-q,-r,-t,-x
分别用于删除、移动、添加、替换、显示、取出归档文件的内容
l nm [option(s)] [file(s)]
显示文件的符号信息,可用于各种目标文件、可执行程序和归档文件(.a)
『未完,待续...』
文章评论(0条评论)
登录后参与讨论