静态库编译及连接l

main.c

 

hello.h

hello.c

 

1.生成hellolib

 

gcc -c hello.c

ar r libhellolib.a hello.o

 

2.ranlib libhellolib

 

3.gcc -o  out  main.c  -L. -l hellolib

 

 

省略libhellolib前的lib

 

 

 

### 使用 GCC 编译静态库并调用 #### 创建静态库 为了创建一个静态库,首先需要准备一些C语言源代码文件。假设有一个名为`function.c`的函数实现文件和另一个测试这些功能的文件`test.c`。 编译源代码文件为目标文件: ```bash gcc -c function.c test.c ``` 这一步骤会生成`.o`文件,即目标文件,它们包含了机器码但是尚未被链接成最终的应用程序或库[^5]。 接着使用`ar`命令将多个对象文件打包成一个档案文件(静态库),这里命名为`libfunction.a`: ```bash ar rcs libfunction.a function.o test.o ``` 此操作的结果是在当前目录下创建了一个新的静态库文件`libfunction.a`。 #### 调用静态库 当有了静态库之后,在其他项目中就可以通过指定该库来进行编译连接了。假设有另外一个主程序叫做`main.c`, 它依赖于之前构建好的`libfunction.a`中的某些函数,则可以通过如下方式来编译整个工程: ```bash gcc main.c -L. -lfunction -static -o myprogram ``` 这条指令告诉GCC去查找位于当前工作目录下的静态库(`-L.`), 并尝试链接名称为`libfunction.a` 的库 (`-lfunction`)。同时指定了 `-static` 参数以确保即使存在相同名字的共享版本也会优先选用这里的静态版[^1]。 另外一种显式指定静态库的方式是直接给出完整的库文件名给`gcc`: ```bash gcc main.c ./libfunction.a -o myprogram ``` 这种方式不需要额外设置库路径也不必担心动态/静态的选择问题[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值