Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10647
  • 博文数量: 6
  • 博客积分: 145
  • 博客等级: 入伍新兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-16 16:12
文章分类

全部博文(6)

文章存档

2012年(1)

2011年(5)

我的朋友
最近访客

分类: LINUX

2011-02-16 19:56:08

gcc语法

gcc编译过程:预处理-cpp(.i)、编译-cc1(.s)、汇编-as(.o)、连接-ld
-E          激活预处理
-S          激活预处理、编译
-c          激活预处理、编译、汇编
-o          编译出可执行文件
-v          查看链接库文件是否存在
-Idir_name  指定头文件路径
-ifile_name 相当于#inlcude
-Ldir_name  指定库文件路径
-lname      链接库文件libname.a
-g          产生供gdb调试的符号信息
-ggdb       以本地格式输出调试信息
-glevel     请求生成调试信息
-E          展开程序中的宏
-S          产生汇编程序
-static     禁止使用动态库
-shared(-G) 尽量使用动态库
-symbolic   建立共享时把应用绑定到全局符号
-Wall       输出警告信息
-pedantic   允许发出ANSI/ISO C标准的警告
-werror     把所有警告转换为错误
-w          关闭所有警告
-Dmacro     相当于#define macro
-Dmacro=def 相当于#define macro=def
-Umacro     相当于#undef macro
-undef      取消任何非标准宏的定义
-O          在编译过程做最佳优化
-O2         比-O更好的编译优化
-shared     指定生成动态连接库
-fPIC       编译为位置独立的代码



静态库与动态库

静态库命名:libxxxx.a
动态库命名:libxxxx.so.major.minor

ar cr/cqs libxxxx.a xxxx.o
gcc -shared -fPCI -o libxxxx.so xxxx.o

-WI,-Bstatic  指示与静态库链接
-WI,-Bdynamic  指示与动态库链接

ldd exefile    查看可执行文件依赖哪些库
nm  libxxxx.so 查看库中涉及到的符号
 U 库中调用但未定义
 T 库中定义
 W 库中定义弱态符号

动态库安装:
1.库放在 /usr/lib 或 /lib
2.在环境变量LD_LIBRARY_PATH中加上库路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:dir_name
3.在/etc/ld.so.conf文件中添加路径 执行ldconfig刷新

当静态库和动态库同名时, gcc命令将优先使用动态库

strip命令可减小可执行文件
readelf -s  /  objdump  -t  /  ldd


make语法

-ldirname   指定被包含的makefile目录
-w          若执行时改变目录则打印当前目录
-d          打印调试信息
-k          程序错误仍继续向下运行


$@          规则的目标所对应的文件名
$<          规则中的第一个文件名
$^          规则中所有相关文件的以空格分隔的列表
$?          规则中日期新与目标的文件列表
$(@D)       目标文件的目录部分
$(@F)       目标文件的文件名部分
$*          目标模式中%及其之前部分

阅读(346) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:oracle语法(待续)

给主人留下些什么吧!~~