GCC编译器的使用

gcc 编译过程

gcc 的编译过程可以划分为四个阶段:预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking)。

预处理
编译
汇编
链接
*.c
*.h
*.i
*.s
*.o
*.out
*.elf
*.exe

gcc 基本语法

语法格式:

gcc [options] file...

常用选项:

选项作用
-E执行到预处理
-S执行到编译
-c执行到汇编
-o <文件名>指定输出文件的文件名
-I <目录名>指定头文件目录(将指定目录添加到头文件的搜索路径列表)
-L <目录名>指定链接的库文件目录(将指定目录添加到库文件的搜索路径列表)
-l <文件名>指定链接的库文件(让指定的库文件参与链接)
-Wall显示警告信息
-g加入调试信息,方便 gdb 调试

使用示例:

gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc test.o -o test
gcc test.c -o test

创建和使用动态库(示例)

创建动态库:

  1. gcc -shared hello.c -o libhello.so

使用动态库:

  1. gcc test.c -lhello -L<libhello.so所在目录> -o test
    或:gcc test.c libhello.so [-L <libhello.so所在目录>] -o test

  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<libhello.so所在目录>
    或:把 libhello.so 放到 /lib 目录

  3. ./test

注:

  1. 执行gcc test.c libhello.so [-L <libhello.so所在目录>] -o test 时,如果 libhello.so 不在当前目录下,需要指明其路径

创建和使用静态库(示例)

创建静态库:

  1. gcc -c [-fPIC] hello.c -o hello.o

  2. ar -crs libhello.a hello.o

使用静态库:

  1. gcc test.c -lhello -L<libhello.a所在目录> -o test
    或:gcc test.c libhello.a [-L <libhello.a所在目录>] -o test

  2. ./test

注:

  1. 执行arm-linux-gnueabihf-gcc -c [-fPIC] hello.c -o hello.o交叉编译时,需要加上 -fPIC 参数

  2. 执行gcc test.c libhello.a [-L <libhello.a所在目录>] -o test 时,如果 libhello.a 不在当前目录下,需要指明其路径

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值