linux gcc编译常用命令之gun工具链的使用

来源:互联网 发布:mysql 解析json字符串 编辑:程序博客网 时间:2024/05/18 01:49

  参考:http://edu.51cto.com/lesson/id-20331.html
  Binutils源码工具包中的常用命令:
gcc g++ ld ldd nm strings readelf addr2line strip objcopy as ar gdb

  1. gcc/g++编译器
    示例:
    gcc -c test.c
    gcc -o test test.c
    gcc -E -o test.i test.c
    gcc -g -o test test.c

  2. addr2line 把程序地址转换为文件名和行号,需要编译时加-g
    示例:
    addr2line a.out -a 804854c

  3. ar 打包提取归档文件
    ar rv libtest.a test.o

  4. as gcc用来输出汇编文件,产生目标文件由连接器ld链接
    示例:
    gcc -S tty.c -o tty.s
    as -o tty.o tty.s

  5. nm 查看导出符号,列出目标文件的符号
    示例:
    nm -o libtest.so

  6. objcopy 文件格式转换

  7. objdump 反编译
    示例:
    objdump -T libtest.so
    objdump -d a.out

  8. ranlib产生归档文件索引,并将其保存到这个归档文件

  9. readelf 显示elf格式可执行文件信息
    示例:
    readelf -h a.out

  10. size 列出目标文件每一段的大小以及总体大小
    示例:
    size a.out

  11. strings 打印目标文件中的可打印字符
    示例:
    strings /lib64/libc.so.6 | grep GLIBC_

  12. strip 丢弃目标文件中的全部或特定符号,减少体积
    示例:
    strip a.out

  13. ldd 用于判断某个可执行的elf档案引用什么动态库
    示例:
    ldd -v libtest.so

  14. 查看so导出函数
    nm -D 7z.so
    objdump -tT 7z.so
0 0