2023-11-07 C语言链接库编译命令

news2024/12/23 2:01:04

点击 <C 语言编程核心突破> 快速C语言入门


C语言链接库编译命令

  • 前言
  • 一、引入库文件, 包括头文件和lib库
  • 二、简单示例
  • 总结


前言

要解决问题:
一般没有给新手的链接库编译命令学习资料, 然而, 不解决这个问题, 调用库就能折腾到劝退,

我近日回答一个问题, 很简单, 调用一个库解决点问题, 死活就是调不通, 然后放弃.

哎, 也不知道是教育体系问题还是其它问题, 总之很别扭, 于是想写篇文章简单说一下.

想到的思路:
C或C++的库系统可以说一言难尽,是劝退的主要原因,我开发了一套课程,就是为避免新手因为这个放弃,但CSDN流量叫个惨淡,佛渡有缘人吧,没辙.

其它的补充:
学 C/C++ 尽早解决链接库文件编译, 并不难.


一、引入库文件, 包括头文件和lib库

缘起于这个问答: vscode C++配置MPFR大数库,

这个是是最基础的库, 本身调用并不困难, 但是从源码编译的话, 就是另外一个冗长的话题了,

所以我用msys2直接下二进制文件, 免于编译.
库文件
库文件已经上传至库文件及头文件

简单介绍gccclang 传入库及头文件命令行参数:

一般我们下的库文件, 包括头文件和lib文件, 可能不在系统环境变量中, 需要将头文件夹, lib所在文件夹及需要引入的lib文件传入.

比如, 我的库文件是在D:\mpfr文件夹下, 那么为了让编译器找到头文件和lib文件路径, 需要加入-ID:\mpfr命令和-LD:\mpfr命令,

一个是include头文件路径, 一个是load库文件路径,

当然还要加上-lgmp, -lmpfr两个lib文件, 这是固定格式, 代表libgmp.alibpfr.a.

完整的命令可能是:

clang.exe -ID:\mpfr -LD:\mpfr -lgmp -lmpfr test283.c -o test283.exe

二、简单示例

下面是一个简单示例, 算自然数e

#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>

int main()
{
    unsigned int i;
    mpfr_t s;
    mpfr_t t;
    mpfr_t u;

    mpfr_init2(t, 200);
    mpfr_set_d(t, 1.0, MPFR_RNDD);
    mpfr_init2(s, 200);
    mpfr_set_d(s, 1.0, MPFR_RNDD);
    mpfr_init2(u, 200);
    for (i = 1; i <= 100; i++)
    {
        mpfr_mul_ui(t, t, i, MPFR_RNDU);
        mpfr_set_d(u, 1.0, MPFR_RNDD);
        mpfr_div(u, u, t, MPFR_RNDD);
        mpfr_add(s, s, u, MPFR_RNDD);
    }
    printf("Sum is ");
    mpfr_printf("%.128Rf", s);
    putchar('\n');
    mpfr_clear(s);
    mpfr_clear(t);
    mpfr_clear(u);
    mpfr_free_cache();
    return 0;
}

vscodetasks.json文件

            "args": [
                "-glldb",
                "-std=gnu11",
                "-ID:\\mpfr",
                "-LD:\\mpfr",
                "-lgmp",
                "-lmpfr",
                "${fileBasenameNoExtension}*.c",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
            ],

如果程序编译正确, 会输出
Sum is 2.71828182845904523536028747135266249775724709369995957496691316455623558650876088723363309546811800721629954395354139973609582725


总结

这就是最基础的库文件引入命令, 更复杂的或更正规的是使用make以及cmake或国产的xmake(严重推荐), 推荐超级巨佬左耳朵耗子的文章:跟我一起写 Makefile, 这个是后人整理版.


点击 <C 语言编程核心突破> 快速C语言入门


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干货 | 网络安全入门学习笔记

安全是互联网公司的生命&#xff0c;也是每位网民的基本需求。现在越来越多的人对网络安全感兴趣&#xff0c;愿意投奔到网络安全事业之中&#xff0c;这是一个很好的现象。 很多对网络安全感兴趣的朋友&#xff0c;总是在寻找适合0基础的学习资源&#xff0c;今天就给大家分享…

Labview的分支判断

和其他的编程语言一样的。都会有switch,case, if ,else; 再combo box中实现 再后台程序中对应的写上逻辑就好了。

P5906 【模板】回滚莫队不删除莫队

这一题&#xff0c;虽说在洛谷标的是模板题&#xff0c;但可能没有“历史研究”那一题更加模板。 这一题相对于回滚莫队的模板题&#xff0c;可能在回滚的处理上稍微复杂了一点。对于回滚莫队就不多解释了&#xff0c;可以看一下 回滚莫队模板题 这一篇博客&#xff0c;稍微简单…

SpringBoot自动装配 Spring相关 常用设计模式 双亲委派 MongoDB Redis 适配器模式与策略模式

SpringBoot自动装配 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 Spring相关 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 常用设计模式 双亲委派 Java虚拟机定义了三个主要的类加载器: 1、启动类加载器 2、扩展类加载器 …

休闲玩具的软文营销策略

休闲玩具行业作为新兴市场&#xff0c;具有广阔的发展前景&#xff0c;生活水平的提高带来消费观念的升级&#xff0c;城市化进程加速导致人们对休闲娱乐的需求持续上涨&#xff0c;玩具作为娱乐性、放松性、互动性的产品受到广大群体喜爱&#xff0c;休闲玩具市场的竞争也愈发…

我是这样发布成绩的

作为一名老师&#xff0c;每当到了期中或者期末考试后&#xff0c;总是有那么些时刻&#xff0c;想要快点把成绩发布出去&#xff0c;让学生知道他们的努力得到了多少回报。但如何发布成绩呢&#xff1f;传统的纸质方式&#xff1f;太慢&#xff01;一个个发短信&#xff1f;太…

广东开放大学:电大搜题助力学子迎考利器

近年来&#xff0c;广东开放大学一直致力于为广大学子提供优质的教育资源和学习服务。作为一所专注于远程教育的学府&#xff0c;广东开放大学不仅拥有雄厚的师资力量和丰富的教育经验&#xff0c;还致力于创新教学手段&#xff0c;为学生提供更便捷、高效的学习体验。在这个信…

【1++的Linux】之线程(三)含生产者消费者模型

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;可重入与线程安全二&#xff0c;死锁三&#xff0c;线程同步什么是线程同步&#xff1f;怎么实现线程同步条件变量 四&#xff0c;生产者与消费者模型1&…

软件测试用例与分类

测试用例与分类 黑盒测试基于需求的设计方法等价类边界值判定表正交表场景设计法错误猜测法 FiddlerPostman测试用例测试分类按测试对象界面测试可靠性测试容错性测试文档测试兼容性测试易用性安装卸载测试安全测试性能测试内存泄漏测试 白盒测试灰盒测试开发阶段单元测试集成测…

uniapp小程序接入腾讯云【增强版人脸核身接入】

文档地址&#xff1a;https://cloud.tencent.com/document/product/1007/56812 企业申请注册这边就不介绍了&#xff0c;根据官方文档去申请注册。 申请成功后&#xff0c;下载【微信小程序sdk】 一、解压sdk&#xff0c;创建wxcomponents文件夹 sdk解压后发现是原生小程序代…

django+drf+vue 简单系统搭建 (2) - drf 应用

按照本系统设置目的&#xff0c;是为了建立一些工具用来处理简单的文件。 1. 准备djangorestframework 关于drf的说明请参见&#xff1a;Django REST Framework教程 | 大江狗的博客 本系列直接使用drf的序列化等其他功能。 安装 conda install djangorestframework conda i…

第三届 “鹏城杯”(初赛)

第三届 “鹏城杯”&#xff08;初赛&#xff09; WEB Web-web1 反序列化tostring打Hack类 Payload:O%3A1%3A%22H%22%3A1%3A%7Bs%3A8%3A%22username%22%3BO%3A6%3A%22Hacker%22%3A2%3A%7Bs%3A11%3A%22%00Hacker%00exp%22%3BN%3Bs%3A11%3A%22%00Hacker%00cmd%22%3BN%3B%7D%7D…

【Java基础】Java容器相关知识小结

Java容器相关知识 0. 前言1. Collection接口1.1. List接口1.1.1. ArrayList1.1.2. LinkedList1.1.3. Vector1.1.4. Stack 1.2. Set接口1.2.1. HashSet1.2.2. LinkedHashSet1.2.3. TreeSet 1.3. Queue接口1.3.1. PriorityQueue1.3.2. LinkedList 2. Map接口2.1. HashMap2.2. Tre…

Verilog刷题[hdlbits] :Always casez

题目&#xff1a;Always casez Build a priority encoder for 8-bit inputs. Given an 8-bit vector, the output should report the first (least significant) bit in the vector that is 1. Report zero if the input vector has no bits that are high. For example, the …

大数据Doris(十九):数据导入(Load)

文章目录 数据导入(Load) 一、Broker load 二、Stream load 三、Insert 四、Multi load

RabbitMQ集群

RabbitMQ概述 1.RabbiMQ简介 RabbiMQ是⽤Erang开发的&#xff0c;集群⾮常⽅便&#xff0c;因为Erlang天⽣就是⼀⻔分布式语⾔&#xff0c;但其本身并不⽀持负载均衡。支持高并发&#xff0c;支持可扩展。支持AJAX&#xff0c;持久化&#xff0c;用于在分布式系统中存储转发消…

用Python实现朴素贝叶斯垃圾邮箱分类

一、实验目的 通过本实验&#xff0c;旨在使用朴素贝叶斯算法实现垃圾邮箱分类&#xff0c;并能够理解并掌握以下内容&#xff1a; 了解朴素贝叶斯算法的基本原理和应用场景。 学习如何对文本数据进行预处理&#xff0c;包括去除标点符号、转换为小写字母、分词等操作。 理解特…

Selenium alert 弹窗处理!

页面弹窗有 3 种类型&#xff1a; alert&#xff08;警告信息&#xff09;confirm&#xff08;确认信息&#xff09;prompt&#xff08;提示输入&#xff09; 对于页面出现的 alert 弹窗&#xff0c;Selenium 提供如下方法&#xff1a; 序号方法/属性描述1accept()接受2dismis…

图形验证码登录

图形验证码登录 添加图片标签&#xff0c;进入页面访问/api/verifyCode 1.html <img onclick"javascript:getvCode()" id"verifyimg" style"margin-left: 20px;"/><script>getvCode();/*** 获取验证码* 将验证码写到index.html页…

Collection集合 迭代器遍历Iterator 和集合增强For

迭代器遍历Iterator 标准写法: 增强For for(类型 名称 : 集合 ) 举例: 不仅可以集合也可以数组 底层仍然是iterator