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


点击 <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.mzph.cn/news/135140.shtml

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

相关文章

【 Docker: 数据卷挂载】

背景 Docker只提供了容器运行的必备依赖&#xff0c;但是一些编辑等操作的依赖是不支持的&#xff0c;如vi操作容器内部文件、将静态资源拷贝到容器内来等。 docker pull nginx docker run -d -p 81:80 --namemynginx -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/dock…

柯桥英语培训,商务英语学习,常用口语

欢迎各位小伙伴来到 ——“每个单词我都认识&#xff0c;但我又不认识整个短语”的时候啦&#xff01; “dog”是“狗” “breakfast”是早餐 那“a dogs breakfast”是“狗的早餐”&#xff1f; 狗听了都摇头。 a dogs breakfast是一句英文俚语&#xff0c;指的是无序、混…

LeetCode | 面试题 02.02. 返回倒数第 k 个节点

LeetCode | 面试题 02.02. 返回倒数第 k 个节点 OJ链接 思路&#xff1a;定义两个快慢指针&#xff0c;让快指针先提前走k个节点&#xff0c;然后再让慢结点和快结点一起走&#xff0c;当快指针 NULL时&#xff0c;慢指针就是倒数第k个节点 代码如下&#xff1a; int kthT…

计算机毕业设计java+springboot+vue的旅游攻略平台

项目介绍 本系统结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算机各种优势的情况下&#xff0c;采用JAVA语言&#xff0c;结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。员工管理系统主要包括个人中心、用户管理、攻略管理、审核信息管理、积分…

STM32Cube +VSCode开发环境搭建

STM32Cube VSCode开发环境搭建 0.前言一、各种方式对比1.STM32CubeMX CLion2.STM32CubeIDE VSCode STM32 VSCode Extension3.VSCode EIDE插件 二、STM32CubeIDE VSCode STM32 VSCode Extension环境搭建1.需要安装的软件2.相关配置3.编译测试 三、总结 0.前言 工欲善其事&…

最新Next14 路由处理器 Route Handlers

四、使用Next路由处理程序 Next.js Route Handlers I. Next中路由处理程序是什么 ​ 路由处理程序是在用户访问站点路由时执行的功能。它们负责处理对定义的URL或路由的传入HTTP请求&#xff0c;以生成所需的数据。从本质上讲&#xff0c;当用户访问Next.js应用程序中的特定页…

chatglm3-6b部署及微调

chatglm3-6b部署及微调 modelscope: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/filesgithub: https://github.com/THUDM/ChatGLM3镜像: ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.4v100 16G现存 单卡 安装 软件依赖 pip install --upgrade pippip ins…

使用IDEA让文本对比不在变的困难

文章目录 前言操作1、IDEA与电脑磁盘任意文件的比较2、项目内部的文件比较3、剪切板比较4、IDEA本地历史比较5、IDEA版本历史对比 前言 在日常实际开发当中我们常常会对一些代码或内容进行比对查看是否有差异&#xff0c;这个时候不需要借用第三方比对插件&#xff0c;在IDEA中…

git笔记

git常见命令 git init :初始化本地仓库&#xff0c;会生成一个.git文件&#xff0c;该文件用于管理和追踪该本地仓库&#xff0c;只有在git仓库下的文件才能被管理! git config user. name "用户名” git config user. email " 邮箱” git config -1 :列出当前git仓库…

老李测评:网络电视盒子哪个好?双十一必看电视盒子推荐

大家好&#xff0c;我是测评人老李&#xff0c;双十一大促期间我们都在买买买&#xff0c;本期老李要分享的数码产品推荐是电视盒子&#xff0c;为了推荐更客观&#xff0c;老李购入了各平台热销的十几款电视盒子&#xff0c;通过两周的对比后&#xff0c;整理了这份电视盒子推…

class类默认导出,header字段在请求中的位置

这是封装好的&#xff0c;没封装的如下 如果没有用uni.post那么就是如下的结构 let header {Content-Type: application/x-www-form-urlencoded,tenant: MDAwMA, } request({url:/sal/formula/validFormula,method:post,data:{},header })

音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程

1.在qq音乐网页版搜索想要的歌曲 qq音乐网站&#xff1a;https://y.qq.com/ 如果你是vip可以直接下载vip的歌曲&#xff0c;如果不是选择不是vip的歌曲进行第一步的操作 2.点击播放进入页面后F12拿到音频地址 然后双击src里面的音频地址复制 网页新标签打开赋值的这个链接&a…

Gitlab服务器配置LDAP指导

ssh登录gitlab服务器&#xff1a;192.168.1.203修改配置文件 sudo su vim /etc/gitlab/gitlab.rb找到ldap_enabled和ldap_servers关键字并修改参数 保存配置文件并重新载入配置 gitlab-ctl reconfigure检查ldap相关配置是否成功&#xff08;列出前100个用户&#xff0c;若没…

BIM、建筑机器人、隧道工程施工关键技术

一、BIM简介 &#xff08;一&#xff09;BIM概念 BIM&#xff08;Building Information Modeling&#xff09;&#xff0c;建筑信息模型。该技术通过数字化手段&#xff0c;在计算机中建立虚拟建筑&#xff0c;该虚拟建筑提供从单一到完整、包含逻辑关系的建筑信息库。信息库…

基于全阶模型磁链观测器的异步电机矢量控制的学习

导读&#xff1a;异步电机直接矢量控制需要通过磁链观测器来获取同步角&#xff0c;用于控制过程中的坐标变换。同时&#xff0c;磁链观测器输出的估计磁链用于磁链PI调节器闭环控制。所以磁链观测器在矢量控制中显得尤为重要。 如果需要文章中对应的仿真模型&#xff0c;关注…

C语言实现输出9*9口诀

完整代码&#xff1a; // 输出9*9口诀 #include<stdio.h>int main(){//i代表九行for (int i 1; i < 10; i){//j代表每行有几列for (int j 1; j <i; j){printf("%d*%d%d ",j,i,i*j);}printf("\n");}return 0; } 运行截图&#xff1a;

安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…

SpringBootWeb案例——Tlias智能学习辅助系统(2)

前一节已经实现了员工信息的条件分页查询以及删除操作。 这一节继续完成新增员工、文件上传、修改员工、配置文件的功能。 目录 新增员工文件上传简介本地存储阿里云OSS介绍与入门项目集成阿里云(难点) 修改员工查询回显修改员工 配置文件参数配置化(Value)yml配置文件Configur…

一文1700字使用Postman搞定各种接口token实战(建议收藏)

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

Gradle笔记 四 Gradle的核心 TASK

文章目录 Task任务入门任务的行为任务的依赖方式任务执行常见的任务&#xff08;*&#xff09;项目报告相关任务调试相关选项性能选项守护进程选项日志选项其它(*) 任务定义方式任务类型任务的执行顺序动态分配任务任务的关闭与开启任务的超时任务的查找任务的规则任务的 onlyI…