gcc基础★

46 篇文章 0 订阅
http://wenku.baidu.com/view/c77d0ad5b9f3f90f76c61b78.html
这篇文章跟我写 无关


读《linux高级程序设计》
[code="java"]
# cat message.c
#include <stdio.h>
void goodbye_world(void){
printf("good by world\n");
}
#
[/code]
[code]
# cat main.c
#include <stdlib.h>
void goodbye_world(void);
int main(int argc,char **argv){
goodbye_world();
exit(0);
}
#
[/code]
1.gcc -c message.c
gcc -c main.c
gcc -o goodbye main.o message.o
或者
2.gcc -o goodbye main.c message.c

共享库:共享函数库包含每个库例程的单一全局版本,它在所有应用程序之间共享,这一个过程背后所涉及的机制详单复杂,但主要依靠的是现代计算机的虚拟内存能力,他允许包含库例程的屋里内存安全地在多个独立用户程序之间共享

“位置无关”,他可以在任意内存位置被装在并仍然可以执行
★★★★★★★★★★★★★★★★★
gcc -fPIC -c message
"PIC" 命令行标记告诉GCC 产生的代码不要包含对函数和变量具体内存位置的引用,
gcc -shared -o libmessage.so message.o

gcc -o goodbye -lmessage -L. main.c

gcc -c main.c
gcc -o goodbye -lmessage -L. main.o
[code="java"]# ls
goodbye libmessage.so main.c main.o message.c message.o
# ldd goodbye
linux-gate.so.1 => (0x00975000)
libmessage.so => not found
libc.so.6 => /lib/libc.so.6 (0x4cfdf000)
/lib/ld-linux.so.2 (0x4cfba000)
#
[/code]

-c告诉gcc驱动程序调用它内部的c编译器并将其输出传递给外部的gnu汇编器,输出结果为.o的文件,它包含适合链接到一个较大程序的已编译目标代码

gcc选项:
1.一般选项 -c -s
2.语言选项
-ansi
-std
-fno-builtin
3.警告级别
-pedantic pedantic-errors
-Wformat
-Wall
4.调试
-g
5.优化
-o1 -o2 -o3
6.硬件选项
-marh
-msoft-float
-mbig-endian
-mlittle-endian
-mabi
man gcc
info gcc
加调试信息
gcc -g -o hello -Wall -pedantic-errors hello.c


objdump -x -d -S hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值