Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296130
  • 博文数量: 61
  • 博客积分: 1581
  • 博客等级: 上尉
  • 技术积分: 741
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 13:52
个人简介

幸运儿不是我,因为我选择的路很难走.如果够出色也不能出头,至少要做到没第二个我.

文章分类

全部博文(61)

文章存档

2013年(14)

2012年(47)

分类: LINUX

2013-04-14 09:22:33


一、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)


阅读(5019) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~