uc之 静态库 动态库

gcc编译器(代码的 预处理/汇编/编译/连接)

C程序员一般写程序会定义 .c和.h两种文件
.c文件(源文件)中一般放代码的实现,.h文件(头文件)中放 各种声明和定义。
gcc -E __.c 只做预处理,可以生成.i文件
gcc -c __.c 只编译不连接,生成.o文件
gcc -S __.c 生成汇编,生成 .s文件
gcc __.c 预处理、编译和连接
gcc -o 指定目标文件名
gcc -E __.c -oxx.i 生成.i文件
gcc -Wall 可以显示更多的警告信息

C语言#include 查找头文件的途径:
1 ""会查找 当前目录(<>不查找)
2 gcc -I 指定的目录
3 系统目录(/usr/include等)
4 用环境变量
(CPATH/C_INCLUDE_PATH)配置的目录
#pragma 可以额外新增一些功能,
#pragma GCC dependency 文件名
比较更新时间,如果 文件名比当前文件新,产生警告
#pragma GCC poison 名字
这个名字将被禁用,否则 产生 错误
#pragma pack(正整数)
可以设置 结构体的对齐和补齐的单位

程序员可以把自己的代码打包成库文件,再提供一个头文件即可。
库文件包括静态库和共享库(动态库),静态库的使用方式 是代码的复制,共享库的使用方式 是函数指针(函数地址)。
静态库优点是 代码独立,效率稍好,缺点是 代码的空间太大,不利于修改和维护。
共享库优点是 代码空间较小,修改、维护比较方便,缺点是 代码依赖于共享库文件。
共享库的使用更加广泛。共享库 以.so结尾,静态库 以 .a结尾。
1 静态库的使用步骤
1.1 生成 静态库文件(.a)
a 写源代码
b 编译生成目标文件(.o)
c 使用ar -r 命令生成静态库文件
ar -r lib__.a __.o
1.2 调用静态库文件
前提:需要lib__.a和__.h文件
a 写调用源代码(test.c)
b 编译 (gcc -c)
c 连接静态库文件,有三种方法:
1) gcc __.o lib__.a (直接连接)
2) 配置环境变量 LIBRARY_PATH,把库文件所在路径配进去,然后用 gcc __.o -l__(库文件名)
3) gcc __.o -l__ -L库文件路径

2 共享库的使用步骤
2.1 生成 共享库文件(.so)
a 写源代码
b 编译生成目标文件(.o)
gcc -c -fpic __.c (-fpic可以不加)
c 生成共享库文件
gcc -shared __.o -o lib__.so
2.2 调用 共享库文件
和静态库一样
注:想运行共享库程序,必须配置LD_LIBRARY_PATH.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值