GCC -l选项:手动添加链接库

2023-05-16

标准库的大部分函数通常放在文件 libc.a 中(文件名后缀.a代表“achieve”,译为“获取”),或者放在用于共享的动态链接文件 libc.so 中(文件名后缀.so代表“share object”,译为“共享对象”)。这些链接库一般位于 /lib/ 或 /usr/lib/,或者位于 GCC 默认搜索的其他目录。

当使用 GCC 编译和链接程序时,GCC 默认会链接 libc.a 或者 libc.so,但是对于其他的库(例如非标准库、第三方库等),就需要手动添加。

GCC 的-l选项(小写的 L)可以让我们手动添加链接库。

GCC 编译器无法找到 cos() 这个函数。为了编译这个 main.c,必须使用-l选项,以链接数学库:

[root@bogon demo]# gcc main.c -o main.out -lm

数学库的文件名是 libm.a。前缀lib和后缀.a是标准的,m是基本名称,GCC 会在-l选项后紧跟着的基本名称的基础上自动添加这些前缀、后缀,本例中,基本名称为 m。

链接其它目录中的库

1) 把链接库作为一般的目标文件,为 GCC 指定该链接库的完整路径与文件名。

例如,如果链接库名为 libm.a,并且位于 /usr/lib 目录,那么下面的命令会让 GCC 编译 main.c,然后将 libm.a 链接到 main.o:

[root@bogon demo]# gcc main.c -o main.out /usr/lib/libm.a


2) 使用-L选项,为 GCC 增加另一个搜索链接库的目录:

[root@bogon demo]# gcc main.c -o main.out -L/usr/lib -lm

可以使用多个-L选项,或者在一个-L选项内使用冒号分割的路径列表。

3) 把包括所需链接库的目录加到环境变量 LIBRARYPATH 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC -l选项:手动添加链接库 的相关文章

随机推荐

  • Retrofit2 源码解析

    0 基本使用 1 Retrofit 将我们的 HTTP API 转换成一个 接口形式 所以我们第一步定义一个 interface public interface GitHubService 64 GET 34 user user repo
  • Android Studio插件的源文件位置——mac端

    有些时候安装插件后 xff0c 整个android studio都卡住了 xff0c 无法通过Android Studio gt preferences gt plugins来卸载 xff0c 这时候就需要找到安装位置 xff0c 进行删除
  • H.264编码基础知识详解

    一 编码基础概念 1 为什么要进行视频编码 xff1f 视频是由一帧帧图像组成 xff0c 就如常见的gif图片 xff0c 如果打开一张gif图片 xff0c 可以发现里面是由很多张图片组成 一般视频为了不让观众感觉到卡顿 xff0c 一
  • Android事件分发

    基本知识 什么是触摸事件 触摸事件 xff0c 是Android用来描述你的手对屏幕做的事情的最小单元 关键词有两个 xff1a 手势 xff08 你的手对屏幕做的事情 xff09 最小单元 所谓手势 xff0c 就是比如按下 移动 抬起
  • HashMap这一篇就够了

    介绍下 HashMap 的底层数据结构 现在用的都是 JDK 1 8 xff0c 底层是由 数组 43 链表 43 红黑树 组成 xff0c 如下图 xff0c 而在 JDK 1 8 之前是由 数组 43 链表 组成 为什么要改成 数组 4
  • Activity的结构分析

    1 结构介绍 大伙儿应该都知道 xff0c Activity的结构分为三层 xff0c 分别是 xff1a Activity Window和View xff0c 不同层承担着不同的责任 上面的图简单的描述了Activity整个结构的构建流程
  • LinkedBlockingQueue

    一 类签名 从类名可知 xff0c LinkedBlockingQueue是基于链表实现的阻塞队列 public class LinkedBlockingQueue lt E gt extends AbstractQueue lt E gt
  • UDP Socket

    UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务 xff0c 它是面向非连接的 xff0c 属不可靠协议 xff0c UDP套接字在使用前不需要进行连接 实际上 xff0c UDP协议只实现了两个功能 xff1a 1
  • volatile

    把代码块声明为 synchronized xff0c 有两个重要后果 xff0c 通常是指该代码具有 原子性 xff08 atomicity xff09 和 可见性 xff08 visibility xff09 原子性意味着个时刻 xff0
  • Android 相机预览方向和拍照方向

    我们知道手机 Camera 的图像数据都是来自于摄像头硬件的图像传感器 xff08 Image Sensor xff09 xff0c 这个 Sensor 被固定到手机之后是有一个默认的取景方向的 xff0c 这个方向如下图所示 xff0c
  • Python无参装饰器

    一 什么是装饰器 定义一个函数 xff0c 该函数可为其他函数添加额外的功能 二 何时用装饰器 需要在不修改被装饰对象源代码及其调用方式时 xff0c 为被装饰对象添加额外的功能 三 如何写一个装饰器 现在我们有如下一个函数help xff
  • typedef的用法

    typedef中声明的类型在变量名的位置出现 什么意思呢 xff0c 我们回头来看 我们是怎么声明int类型变量的 xff1f int Typename 像上面这样 xff0c 对不对 xff1f 那么用typedef之后呢 xff1f 把
  • Activity启动流程(一)

    Launcher进程请求AMSAMS发送创建应用进程请求Zygote进程接受请求并孵化应用进程应用进程启动ActivityThread 一 Launcher进程请求AMS 上面我们提到根Activity的启动流程其实就是桌面上点击一个应用图
  • Activity启动流程(二)

    应用进程绑定到AMSAMS发送启动Activity的请求ActivityThread的Handler处理启动Activity的请求 一 应用进程绑定到AMS 1 时序图 2 详细过程 在前面一篇我们知道当Zygote进程孵化出应用进程后会执
  • AudioRecord

    数字音频 数字音频通常分为三步 xff1a 采样 量化 编码 采样 xff1a 就是将获取的信号给数字化 xff0c 其中有个概念就是采样频率 xff0c 而人耳能听到的频率范围只有20Hz 20kHz xff0c 所以一般设置的都是44
  • GCC编译C/C++程序(一步完成)

    使用 GCC 编译器编译 C 或者 C 43 43 程序 xff0c 也必须要经历这 4 个过程 但考虑在实际使用中 xff0c 用户可能并不关心程序的执行结果 xff0c 只想快速得到最终的可执行程序 xff0c 因此 gcc 和 g 4
  • GCC -E选项:对源程序做预处理操作

    存储在 demo c 文件中 include lt stdio h gt int main puts 34 hello world 34 return 0 通过为 gcc 指令添加 E 选项 xff0c 即可控制 GCC 编译器仅对源代码做
  • GCC -S选项:编译非汇编文件

    root 64 bogon demo cat demo c include lt stdio h gt int main puts 34 Hello World 34 return 0 root 64 bogon demo gcc E de
  • GCC -c选项:生成目标文件

    root 64 bogon demo ls demo c root 64 bogon demo cat demo c include lt stdio h gt int main puts 34 Hello World 34 return
  • GCC -l选项:手动添加链接库

    标准库的大部分函数通常放在文件 libc a 中 xff08 文件名后缀 a代表 achieve xff0c 译为 获取 xff09 xff0c 或者放在用于共享的动态链接文件 libc so 中 xff08 文件名后缀 so代表 shar