GCC通过-L 和-l 可以定义所使用的库,但是在实际应用中不同平台中库命名不一样,比如名字为XXX的库,在linux下叫libXXX.a,在window下可能就叫XXX.dll.对于初学者可能这个库了,可能就是找不到.命令ld可以告诉你gcc会搜索那些名字.通过命令
ld -l pump --verbose
在执行之后再最下会发现
attempt to open /usr/i486-linux-gnu/lib32/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.a failed
attempt to open /usr/local/lib32/libpump.so failed
attempt to open /usr/local/lib32/libpump.a failed
attempt to open /lib32/libpump.so failed
attempt to open /lib32/libpump.a failed
attempt to open /usr/lib32/libpump.so failed
attempt to open /usr/lib32/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib/libpump.a failed
attempt to open /usr/local/lib/libpump.so failed
attempt to open /usr/local/lib/libpump.a failed
attempt to open /lib/libpump.so failed
attempt to open /lib/libpump.a failed
attempt to open /usr/lib/libpump.so failed
attempt to open /usr/lib/libpump.a failed
ld: cannot find -lpump
从中可以看到GCC搜索那些类库.通过-L可以设置优先搜索的路径
$ ld -L /home/javen/pump -l pump --verbose
attempt to open /home/javen/pump/libpump.so failed
attempt to open /home/javen/pump/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.a failed
attempt to open /usr/local/lib32/libpump.so failed
attempt to open /usr/local/lib32/libpump.a failed
attempt to open /lib32/libpump.so failed
attempt to open /lib32/libpump.a failed
attempt to open /usr/lib32/libpump.so failed
attempt to open /usr/lib32/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib/libpump.a failed
attempt to open /usr/local/lib/libpump.so failed
attempt to open /usr/local/lib/libpump.a failed
attempt to open /lib/libpump.so failed
attempt to open /lib/libpump.a failed
attempt to open /usr/lib/libpump.so failed
attempt to open /usr/lib/libpump.a failed
ld: cannot find -lpump
当然了第一个被搜索道德库会被利用,当在搜索路径中放入库是则会
attempt to open /home/javen/pump/libpump.so failed
attempt to open /home/javen/pump/libpump.a succeeded
分享到:
相关推荐
### Linux下Gcc生成和使用静态库和动态库详解 #### 一、基本概念 **1.1 什么是库** 库本质上是一种可执行代码的二进制形式,它可以被操作系统载入内存执行。无论是Windows还是Linux平台,都广泛地使用着库。然而...
### gcc生成静态库和动态库 #### 一、概述 在Linux环境下,开发人员经常需要创建和使用静态库和动态库。这两种类型的库都用于封装一组功能或接口,以便其他程序能够重用这些代码,从而简化开发过程并提高代码复用...
### Linux GCC 生成动态库与静态库详解 #### 一、基本概念 1.1 **什么是库** 在软件开发领域,库是指预先编写并编译好的...以上便是关于如何在Linux环境下使用GCC生成静态库和动态库的详细介绍,希望对您有所帮助。
在嵌入式开发领域,了解如何使用gcc工具链来构建和管理静态库(`.a`文件)与动态库(`.so`文件)是非常重要的。本文将详细介绍如何通过gcc创建这两种类型的库,并讨论它们各自的用途、优缺点以及在实际项目中的应用...
Linux 使用 GCC 生成静态库和动态库 在 Linux 系统中,使用 GCC 编译器可以生成静态库和动态库。静态库和动态库是两种不同的库类型,它们的主要区别在于代码被载入的时间不同。 静态库是在编译时被载入到可执行...
### GCC生成静态库和动态库详解 在软件开发过程中,函数库扮演着极其重要的角色,它们不仅能够提高代码的重用性,还能有效提升程序的性能和可维护性。GCC(GNU Compiler Collection)作为广泛使用的编译器工具集,...
在Linux系统中,动态库(Dynamic Library)和静态库(Static Library)是程序开发中不可或缺的部分,它们提供了代码复用和模块化的功能。本篇文章将深入探讨这两种库的创建、使用以及它们之间的区别。 首先,我们来...
### 使用GCC建立并调用静态库与动态库 在软件开发过程中,经常需要将一些功能模块封装成库供多个程序共享...通过以上步骤,我们可以使用GCC成功地创建并调用了静态库和动态库,这对于软件开发来说是非常有用的技能。
使用动态库的方法与静态库类似,但是需要在编译时指定动态库的名称和路径。 使用gcc生成静态库和动态库的步骤基本相同,但是在使用时需要注意静态库和动态库的文件名命名规范和使用方法的差异。
6. **使用编译好的库**:在项目中使用编译的Boost库时,需要链接对应的动态库(如`-lboost_thread -lboost_system`)或者静态库,并确保库的路径被系统搜索路径(`LD_LIBRARY_PATH`或`DYLD_LIBRARY_PATH`)包含。...
在Linux环境下,使用GCC(GNU Compiler Collection)生成静态库和动态库是开发过程中的常见操作。静态库和动态库在程序构建和运行时各有特点,理解它们的工作原理和创建方法对于软件开发至关重要。 首先,静态库在...
在编译目标程序时,通过`-L`指定静态库路径,然后用`-l`指定库名,程序会将库中所需的所有函数包含进来。 在给出的示例中,`time.h`和`stu.h`定义了类`Time`和`Stu`,`time.cpp`和`stu.cpp`实现了这些类的方法,`...
GCC 编译器为我们提供了两种类型的库:静态库(archive,扩展名.a)和共享库(又叫动态库,扩展名.so)。无论是静态库还是共享库,都是由.o 文件创建的。每个.o 文件都包含这个编译单元的符号表。 静态库 静态库是...
"linux C 动态库和静态库生成及使用笔记" Linux C 动态库和静态库是两种不同的库类型,它们在生成、使用和链接时有着不同的机制和要求。下面我们将详细介绍 Linux C 动态库和静态库的生成、使用和链接机制。 一、...
3. **链接静态库**:在编译时,需要指定静态库路径(例如-L)和库名(例如-l),链接器会将库中的函数和变量链接到可执行文件。 二、动态库 1. **动态库的概念**:动态库在程序运行时被加载到内存中,多个程序可以...
库分为静态库和动态库,它们在程序编译和运行过程中起着至关重要的作用。本文将详细讲解这两种库的编写方法,以及如何在实际项目中应用它们。 **一、静态库** 1. **创建静态库** 静态库的文件扩展名为`.a`,在...
静态库的制作:(inc/lib/src/main.c) gcc -c src/*.c(编译src目录下的.c文件生成.o文件) ar rs libmath.a *.o(生成静态库:libmath.a(命名规则:必须以lib开头,以.a结尾,中间是库名:math)) 静态库的使用: gcc main.c -...
本文将介绍如何使用GCC进行编译和链接,GDB的基本调试技巧,以及Linux下静态库和动态库的创建、使用和合并。 ### GCC的简单使用 **1. 创建可执行程序** - 编写源代码文件,例如`test.c`,包含主函数`main()`。 - ...
编译时,需要指定静态库路径: ``` gcc main.c -L. -lmessage -o main `-L.`指定当前目录为库搜索路径,`-lmessage`指链接名为`message`的库。 运行生成的`main`程序,它将包含库的所有代码,即使在没有静态库的...
本资源提供了在CentOS7环境下编译的OpenSSL 3.0版本的动态库和静态库,这将对需要在该操作系统上进行安全编程或系统集成的开发者非常有帮助。 首先,让我们深入理解OpenSSL 3.0。OpenSSL 3.0是一个重大的版本更新,...