假设当前目录下有这些源文件:[main.c func.c func.h],其中main.c要调用func.c中的函数。
【1】生成静态库:
$ gcc -c func.c -o func.o
$ ar rcs libfunc.a func.o
$ gcc main.c -o main -static -L. -lfunc
$ ./main
【2】生成动态库:
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared -o libfunc.so.1.0.0 func.o
$ ln -s libfunc.so.1.0.0 libfunc.so
$ gcc main.c -o main -L. -lfunc
$ export LD_LIBRARY_PATH=$(pwd)
$ ./main
如果将so文件copy到系统lib目录(如/usr/lib),则最后2步就不用了。
最后还有3个小知识:
【1】nm命令:列出目标文件或2进制文件的所有符号。
【2】ldd命令:列出为了使程序正常运行所需要的所有共享库。
【3】/etc/ld.so.conf文件:除了标准目录(/lib和/usr/lib)之外,链接器和加载器搜索共享库时要检查的其他目录,和这个文件相关的一个命令是:ldconfig 。
分享到:
相关推荐
Linux 使用 GCC 生成静态库和动态库 在 Linux 系统中,使用 GCC 编译器可以生成静态库和动态库。静态库和动态库是两种不同的库类型,它们的主要区别在于代码被载入的时间不同。 静态库是在编译时被载入到可执行...
"gcc静态库和动态库生成" 本文主要介绍如何使用gcc生成静态库和动态库,并使用它们。...使用gcc生成静态库和动态库的步骤基本相同,但是在使用时需要注意静态库和动态库的文件名命名规范和使用方法的差异。
在Linux环境下,使用GCC(GNU Compiler Collection)生成静态库和动态库是开发过程中的常见操作。静态库和动态库在程序构建和运行时各有特点,理解它们的工作原理和创建方法对于软件开发至关重要。 首先,静态库在...
### GCC生成静态库和动态库详解 在软件开发过程中,函数库扮演着极其重要的角色,它们不仅能够提高代码的重用性,还能有效提升程序的性能和可维护性。GCC(GNU Compiler Collection)作为广泛使用的编译器工具集,...
#### 二、使用GCC生成静态库和动态库的示例 接下来,我们将通过一个具体的示例来演示如何在Linux环境中创建静态库和动态库,并且如何使用它们。 **2.1 准备测试代码** 为了方便理解,我们需要准备三个文件:`...
### Linux GCC 生成动态库与静态库详解 #### 一、基本概念 1.1 **什么是库** 在软件开发领域,库是指预先编写并编译好的...以上便是关于如何在Linux环境下使用GCC生成静态库和动态库的详细介绍,希望对您有所帮助。
### gcc静态库与动态库生成 在嵌入式开发领域,了解如何使用gcc工具链来构建和管理静态库(`.a`文件)与动态库(`.so`文件)是非常重要的。本文将详细介绍如何通过gcc创建这两种类型的库,并讨论它们各自的用途、优...
ar rs libmath.a *.o(生成静态库:libmath.a(命名规则:必须以lib开头,以.a结尾,中间是库名:math)) 静态库的使用: gcc main.c -L ./lib -l math -I ./inc -o main(-L:指定库名所在路径,-l:指定库名,-I:指定头文件路径...
在Linux系统中,动态库(Dynamic Library)和静态库...总之,Linux的动态库和静态库是程序开发的重要组成部分,它们提供了代码复用的方法。了解并熟练掌握它们的创建和使用,将对提升开发效率和优化程序性能大有裨益。
使用静态库需要在源程序中包含静态库的头文件,然后在使用 gcc 命令生成目标文件时指明静态库名。例如,我们可以使用以下命令生成目标文件 hello: ``` # gcc -o hello main.c -L. -lmyhello ``` 动态库 动态库是...
### 使用GCC建立并调用静态库与动态库 在软件开发过程中,经常需要将一些功能模块封装成库供多个程序共享...通过以上步骤,我们可以使用GCC成功地创建并调用了静态库和动态库,这对于软件开发来说是非常有用的技能。
GCC 静态库和共享库的生成及调用 GCC 编译器为我们提供了两种类型的库:静态库(archive,扩展名.a)和共享库(又叫动态库,扩展名.so)。无论是静态库还是共享库,都是由.o 文件创建的。每个.o 文件都包含这个编译...
通过以下步骤,我们可以生成静态库`libtemp.a`和动态库`libtemp.so`,然后分别链接生成可执行程序`mystatic`和`myshared`。 当使用`mystatic`时,由于它与静态库`libtemp.a`进行了链接,即使删除`libtemp.a`,`...
静态库与动态库不同,静态库在编译时会将库代码直接嵌入到目标程序中,因此生成的可执行文件独立,不需要运行时依赖额外的库文件。这对于某些需要部署到没有特定库环境的系统或需要确保程序完整性的场景非常有用。 ...
通过编译`hello.c`生成对象文件,再使用`ar`工具创建静态库,或直接使用`gcc`生成动态库。最后,链接`main.c`与相应的库文件,观察程序的运行结果,从而深入理解静态库和动态库的工作原理及其在实际编程中的应用。 ...
如果一切设置正确,编译应该会成功,生成一个`.lib`文件(静态库)或`.dll`文件(动态库)。 6. **使用库**:在你的其他项目中使用编译好的CJson库,你需要将生成的`.lib`或`.dll`文件添加到链接器依赖项,并包含`...
### 在Linux下生成动态库与静态库的知识点详解 #### 实验目的 1. **掌握使用GCC编译C语言程序的基本方法和技巧** - GCC是GNU Compiler Collection的一部分,广泛用于Linux环境中C、C++等语言的编译工作。 - 了解...