GCC , 静态库的制作

54 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情

一.GCC

1.什么是GCC

安装命令: sudo apt install gcc g++

查看版本: gcc/g++ -v/--version

2.编程语言的发展

image.png

3.GCC工作流程

image.png

4.GCC常用参数选项

image.png

image.png 源代码 -->预处理后源代码

g++ hello.cpp -E         g++ -E hello.cpp      //生成hello.i
g++ hello.cpp -E -o ms.i    //生成ms.i

预处理后源代码 -->汇编代码

g++ hello.i -S          g++ -S hello.i       
g++ hello.i -S -o hello.s

汇编代码 -->目标代码/库代码/启动代码/其他目标代码

g++ hello.s -c
g++ hello.s -c -o hello.o  

直接生成可执行程序,汇编代码,目标代码

g++ hello.cpp, g++ hello.cpp -S, g++ hello.cpp -c

5.什么是库

库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用 者一些可以直
接拿来用的变量、函数或类。 
◼ 库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只
是库不能单独运行。
◼ 库文件有两种,静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制 到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加 载到内存中供程序调用。
◼ 库的好处:1.代码保密 2.方便部署和分发

6.静态库的制作

image.png

将add.c div.c mult.c sub.c 打包静态库

image.png

先将add.c div.c mult.c sub.c转为add.o div.o mult.o sub.o

image.png

g++ -c add.c div.c mult.c sub.c

然后将其打包

image.png

ar rcs libcalc.a add.o div.o mult.o sub.o

image.png

-I 指定 include 包含文件的搜索目录

gcc main.c -o app -I ./include/

-l 在程序编译的时候,指定使用的库

-L 指定编译的时候,搜索的库的路径

gcc main.c -o app -I ./include/ -l calc -L./lib

image.png