linux 查看 编译选项,gcc编译选项及一些查看目标文件信息的命令

一、gcc options

-E        不生成文件,只输出预处理结果(输出终端

-S        只预处理和编译,把文件编译成为汇编代码greet.s

-c        预处理,编译和汇编,生成.o的obj文件 ( greet.o )

-o file    输出名为file的可执行文件名   (缺省为a.out)

-O    -O2    优化编译

-g:         产生可用于调试的输出

-Wall    提示更多警告信息

-Wstrict-prototypes    如果函数的声明或定义没有指出参                           数类型,编译器就发出警告.

-Wl,option  将option作为选项传递给linker, option 逗号分割,        如:-Wl,-soname,libmymath.so.1

二、创建函数库

分类:

静态库: 在编译过程中将库函数代码直接加入到生成的可执行程序中,程序运行过程中不需要利用库函数。

动态库: 编译时,只是在生成的可执行程序中简单指定需要使用的库函数信息,程序运行过程中需要利用库函数。

共享库: 共享库的一种变化形式,目前大都采用共享库的方式。(好处:1、节省物理内存;2、库更新后不用重新链接;3、不需要在编译时指定库)

命名:

静态库: 前缀lib+库名+.a (libm.a, libstdc++.a等)

共享库: 前缀lib+库名+.so+版本号 (libm.so.6, libc.so.6)

三、查看可执行目标文件结构:size

The size utility displays sizes of each section in an object file.

示例:

[root@boota]# size a.out

text   data  bss  dec  hex  filename

1015  232   24  1271  4f7  a.out

四、查看可执行文件依赖哪些库:ldd

The ldd utility is very useful in finding out the dependencies of an executable on shared libraries.

示例:

[root@boota]# ldd a.out

libc.so.6 => /lib/i686/libc.so.6 (0x4002c000)

/lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0x40000000)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值