1 64位编译与32位编译
gcc d1_size_c.c -Wall
gcc d1_size_c.c -Wall -m32
fatal error: sys/cdefs.h: No such file or directory
sudo apt-get update
sudo apt-get purge libc6-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
size_char = 1
size_short = 2
size_int = 4
size_long = 4
size_longlong = 8
size_float = 4
size_double = 8
size_point = 4
size_char = 1
size_short = 2
size_int = 4
size_long = 8
size_longlong = 8
size_float = 4
size_double = 8
size_point = 8
2 gcc命令
gcc [选项] 文件名
-v
-E
-S
-c
-o <file>
-Wall
3 编译过程
gcc demo.c -E -m32 -o demo.i
gcc demo.i -S -m32 -o demo.s
gcc demo.s -c -m32 -o demo.o
gcc demo.o -m32 -o demo
4 编译方式
gcc -m32 hello.c
gcc -m32 -o hello.c hello
gcc hello.c -c -m32 -o hello.o
gcc hello.o -m32 -o hello
5 链接
5.1 查看链接文件
# 显示编译过程
sudo gcc demo.o -v -m32 -o demo
# crt1.o、crti.o、crtbegin.o、crtend.o、crtn.o是gcc加入的系统标准启动文件
# -lc:链接libc库文件,其中libc库文件中就实现了printf等函数
5.2 不链接库文件
sudo gcc demo.o -nostdlib -m32 -v -o demo
5.3 动态链接库和静态链接库
file demo
dynamically linked
statically linked
gcc demo.c -m32 -static -o demo