0%

开发工具选项笔记

这些开发工具选项太多了,只记录一些碰到的,其他的随缘吧,佛系程序员

LD
  • -m 指定模拟的机器

  • -V 列出所支持的模拟器

  • -nostdlib 不链接默认的库文件

  • -N 把text和data节设置为可读写.同时,取消数据节的页对齐

  • -e ENTRY 使用ENTRY作为程序入口

  • -Ttext ORG 使用ORG, 指定section在输出文件中的绝对地址

参考这里

GCC
  • -fno-stack-protector 禁用栈保护代码

  • -fno-builtin 禁用buildin函数优化

  • -fno-PIC PIC就是position independent code,PIC生成相对地址,no-pic生成含有绝对地址的程序

  • -nostdinc 不搜索标准系统目录的头文件,只用-I选项指定的目录

  • -E 做完预处理后,停止编译

  • -x c 指定源代码的语言

  • -MM 生成依赖头文件

  • -MT 指定依赖文件中的目标

  • -march=i686 把目标文件编译为i686指令

gcc -Q --help=target 获取默认值

GDB
Objdump

objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

  • -f 显示文件头信息
  • -D 反汇编所有section (-d反汇编特定section)
  • -h 显示目标文件各个section的头部摘要信息
  • -x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。
  • -i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。
  • -r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。
  • -R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。
  • -S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
  • -t 显示文件的符号表入口。类似于nm -s提供的信息
Objcopy

objcopy –O binary test.o test.bin

将test.o转换成raw binary文件格式。

当将object文件转换成raw binary格式时,通常将去除掉symbols和relocation信息。在生成s-record过程中,有时需要用选项“-S”,“-R”去除掉binary文件,s-record文件不需要的相应信息。