01-C语言静态库的创建和使用

一、库是什么?

库是一个二进制文件,包含的代码可以被程序调用。
例子: 标准C库、数学库、线程库…
库有源码,可被下载后编译;也可以直接安装二进制包。

1.2 库一般放置的位置?

/lib   /usr/lib
Windows环境下和LInux环境下位置不一样。

1.3 静态库特点

  1. 编译(链接)时需要把静态库相关代码复制到可执行文件中。
  2. 程序中已包含代码,运行时不再加载静态库。
  3. 程序运行时无需加载静态库,运行速度更快。
  4. 占用更多磁盘和内存空间。
  5. 静态库升级后,程序需要重新编译链接。

1.4 动态库(共享库)特点

  1. 程序不包含库中代码,尺寸小。
  2. 多个程序可共享同一个库。
  3. 程序运行时需要加载库。
  4. 库使用方便,无需重新编译程序。
  5. 使用更加广泛。

二、使用步骤(制作静态库并使用)

1.创建hello.c,为制作静态库做准备。

代码如下(示例):

// 文件名: hello.c
// 创建一个hello.c的文件,将其制作为为静态库。
#include <stdio.h>
void hello()
{
	printf("hello world-hello family!\n");

}

在终端里编译:
1. gcc -c hello.c   --将其编译成-c的链接,不用执行
2. ar -rsv libhello.a hello.o   // ar命令 创建libxxx.a 文件

// ar: creating libhello.a     -----------》 结果展示
// a - hello.o
//  注释: 没有main函数的.c 文件不能生成可执行文件。

2. 创建test_t.c ,为使用静态库hello做准备。

#include <stdio.h>
// 声明
void hello();

int main(int argc, char const *argv[])
{
    // 链接静态库
    hello();
    return 0;
}

在终端里编译:
1. gcc -o test_t test_t.c -L. -lhello    // gcc -o 目标文件 源码.c -L 路径 -lxxx 
2. ./ test_t                   // 运行        -L.   指的是当前路径

// hello world-hello family!          ------- > 结果展示

2.创建动态库 bye_t.c

#include <stdio.h>


void bye_t()
{
    printf("bye bye\n");
}

3. 创建hello.c ---- 并生成动态库

#include <stdio.h>
void hello()
{
	printf("hello world-hello family!\n");

}

1. 编译 hello.c 和 bye_t.c:
gcc  -c -fPIC hello.c bye_t.c   // -fPIC 一定得加,  指的是生成与位置无关的代码
// 生成了hello.o 和bye_t.o 两个文件

2. 生成动态库
gcc -shared -o libmyhellobye.so bye_t.o hello.o  
// 生成了 libmyhellobye.so  动态库

4. 生成动态库的链接–创建文件test.c

#include <stdio.h>
void hello();
void bye_t();
int main(int argc,char **argv[]){
	hello();
	bye_t();
return 0;
}

// 编译:
gcc -o test test.c -L -lmyhellobye

5. 如何找到共享库并执行

// 1. 方法1:将动态库拷贝到/usr/lib里面
// 2. 方法2:在LD_LIBRARY_PATH环境变量中添加 库所在的路径
export LD_LIBRARY_PATH = ./    // 将路径设置为当前路径
// 再执行就可以
// 将环境变量添加到启动脚本里面
vim ~/.bashrc
export LD_LIBRARY_PATH = ./xxxxxx
sources ~/.bashrc         // 在所有环境变量下(窗口)都可以使用

ldd test // 可查看test使用的动态库

总结

本章对于动态库和静态库的使用和创建进行了展示,并且需要注意的是:静态库一般以.o结尾,而动态库一般以.so结尾。库一般存放在./usr/lib中,对于静态库和动态库的使用进行了代码展示,最后ldd 可以查看文件所使用的动态库有哪些。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用第三方静态库的步骤如下: 1. 下载并安装第三方库。 2. 在你的 VS Code 项目中创建一个文件夹,用于存放第三方库的头文件和库文件。 3. 将第三方库的头文件复制到这个文件夹中。 4. 将第三方库的库文件复制到这个文件夹中。 5. 打开 VS Code,打开你的项目文件夹。 6. 在项目文件夹中创建一个名为 `.vscode` 的文件夹,并在其中创建一个名为 `c_cpp_properties.json` 的文件。 7. 在 `c_cpp_properties.json` 文件中添加以下内容: ``` { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "path/to/third/party/library/include" ], "defines": [], "compilerPath": "path/to/compiler", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "msvc-x64", "browse": { "path": [ "${workspaceFolder}", "path/to/third/party/library/include" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 4 } ``` 其中 `path/to/third/party/library/include` 为第三方库头文件所在的路径。 8. 在 VS Code 中打开你的 C 语言源文件,使用 `#include` 来引用第三方库的头文件。 9. 在编译命令中加入第三方库的链接选项,例如: ``` gcc main.c -o main.exe -L/path/to/third/party/library/lib -lthirdpartystaticlibrary ``` 其中 `/path/to/third/party/library/lib` 为第三方库的库文件所在路径,`thirdpartystaticlibrary` 为第三方库的库文件名。 希望以上步骤能够帮助你在 VS Code 中使用第三方静态库。如果有任何问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值