gcc链接外部函数库

gcc库函数大全(有案例) 这是我下载的gcc网站做成的,解压后打开\gcc库函数文件\gcc\download\latest\index文件即可 立即下载

库是预编译的目标文件(object files)的集合,它们可被链接进程序。静态库以后缀为‘.a’的特殊的存档文件(archive file)存储。

标准系统库可在目录 /usr/lib 与 /lib 中找到。比如,在类 Unix 系统中 C 语言的数学库一般存储为文件 /usr/lib/libm.a。该库中函数的原型声明在头文件 /usr/include/math.h 中。C 标准库本身存储为 /usr/lib/libc.a,它包含 ANSI/ISO C 标准指定的函数,比如‘printf’。对每一个 C 程序来说,libc.a 都默认被链接。

下面的是一个调用数学库 libm.a 中 sin 函数的的例子,创建文件calc.c:

#include <math.h>
#include <stdio.h>
 
int
main (void)
{
    double x = 2.0;
    double y = sin (x);
    printf ("The value of sin(2.0) is %f\n", y);
    return 0;
}

尝试单独从该文件生成一个可执行文件将导致一个链接阶段的错误:

$ gcc -Wall calc.c -o calc
/tmp/ccbR6Ojm.o: In function 'main':
/tmp/ccbR6Ojm.o(.text+0x19): undefined reference to ‘sin’

函数 sin,未在本程序中定义也不在默认库‘libc.a’中;除非被指定,编译器也不会链接‘libm.a’。

为使编译器能将 sin 链接进主程序‘calc.c’,我们需要提供数学库‘libm.a’。一个容易想到但比较麻烦的做法是在命令行中显式地指定它:

$ gcc -Wall calc.c /usr/lib/libm.a -o calc

函数库‘libm.a’包含所有数学函数的目标文件,比如sin,cos,exp,log及sqrt。链接器将搜索所有文件来找到包含 sin 的目标文件。

一旦包含 sin 的目标文件被找到,主程序就能被链接,一个完整的可执行文件就可生成了:

$ ./calc
The value of sin(2.0) is 0.909297

可执行文件包含主程序的机器码以及函数库‘libm.a’中 sin 对应的机器码。

为避免在命令行中指定长长的路径,编译器为链接函数库提供了快捷的选项‘-l’。例如,下面的命令

$ gcc -Wall calc.c -lm -o calc

与我们上面指定库全路径‘/usr/lib/libm.a’的命令等价。

一般来说,选项 -lNAME使链接器尝试链接系统库目录中的函数库文件 libNAME.a。一个大型的程序通常要使用很多 -l 选项来指定要链接的数学库,图形库,网络库等。

====

http://hi.baidu.com/newyork_zero/blog/item/601ab9d7af1913ce50da4b16.html


GCC库函数及使用安装 GCC是一个用于linux系统下编程的编译器。GCC又是海湾阿拉伯国家合作委员会的英文缩写。 立即下载

相关推荐

5.4 磁悬浮轴承控制系统仿真:在MATLAB/Simulink中搭建包含功放、传感器模型的闭环系统模型,进行稳定性与动态性能仿真

磁悬浮轴承控制系统仿真方法 摘要:磁悬浮轴承控制系统仿真需建立包含转子动力学、传感器、控制器、功率放大器和电磁执行器的高保真非线性模型。通过MATLAB/Simulink搭建闭环系统,重点建模传感器带宽限制与噪声、功放饱和特性以及电磁力非线性。仿真分析包括时域阶跃响应、扰动抑制测试,频域稳定性分析(伯德图、奈奎斯特图),以及参数摄动下的鲁棒性验证。关键要验证控制算法在非线性因素影响下的稳定性和动态性能,为实际系统实现提供可靠依据。仿真中需特别注意物理量单位一致性和数字控制离散化效应。

技术工作者 1106

linux下编译动态链接库的一个小例子

最近在项目中需要编译一个库,但是对linux

李青锋的专栏 9336

别再只会setStyleSheet了!Qt实现背景透明的5种方法全解析(附性能对比)

本文深入解析Qt实现背景透明的5种高阶方案,包括QPalette、setWindowOpacity、QGraphicsOpacityEffect、样式表和复合透明方案,并提供详细的性能对比与优化建议。针对不同平台和场景,帮助开发者选择最适合的透明效果实现方式,提升UI设计质量与性能表现。

weixin_27061475的博客 259

gcc内嵌汇编调用C函数

C样式的函数使用堆栈传递输入值;C库函数也是如此;所有输入参数都要放入堆栈中,顺序和函数中提到的顺序相反;汇编中压入栈中函数参数的顺序,和参数列表中函数出现的顺序相反; 代码如下所示: C中函数printf的使用如下: printf("The answer is %d\n", k); 汇编的版本是这样的: pushl k pushl $output call printf addl $

linengeir的专栏 4190

28-Halcon-- union_object_model_3d函数功能(用于3D模型融合)

Halcon算子union_object_model_3d是专业的3D模型融合工具,主要用于多视图拼接、部件组装和多源数据融合。该算子支持点云、网格和参数化模型输入,提供多种融合算法选择,包括基础点云拼接('points_cloud')、网格融合('mesh')和精确CAD布尔运算('cad')。工业应用涵盖逆向工程扫描拼接、汽车部件虚拟装配等场景,支持性能优化如空间分区和流式处理。算子还解决颜色属性融合、法向量保留等特殊需求,并提供拼接误差分析、拓扑验证等质量评估手段。最佳实践包含动态场景重建工作流和CA

weixin_45590420的博客 1055

《C#零基础入门之百识百例》(七十一)委托介绍 -- 战士升级示例

委托的存在是因为,我们有时候需要将一个函数作为另一个函数的参数,这时就要用的委托(Delegate)机制。委托用关键字`delegate`声明,他实际上定义了一种“函数类型”,明确规定了函数参数类型和返回值类型。

陈言必行 -- Unity游戏开发领域优质博主 2110

8. 从0学ARM-内联汇编、混合汇编、ATPCS规则

【混合汇编】 【4】内联汇编:在c语言代码中嵌入汇编指令 (1)Gcc 通过关键字“asm”来声明内联汇编 (2)格式: asm或__asm__开头,小括号+分号,括号内容写汇编指令。指令+\n\t 用双引号引上 asm(code : output operand list : input operand list : clobber list); (3)例1:无参数,无返回值 asm ( //汇编指令 “mrs r0,cpsr \n\t” “bic r0,r0,#0x80 \n\t” “msr c

一口Linux的专栏 2384

38.XDMA寄存器详解2-H2C、C2H通道寄存器组剖析

目录 1.上节回顾 2. H2C寄存器剖析 2.1 H2C通道标识寄存器(0x00) 2.2 H2C通道控制寄存器(0x04) 2.3 H2C通道状态寄存器(0x40) 2.4 H2C通道完成描述符数量寄存器(0x48) 2.5 H2C通道对齐寄存器(0x4C) 2.6 H2C通道查询模式回写地址寄存器(0x88、0x8C) 2.7 H2C通道中断掩码寄存器(0x90)​ 2.8 H2C通道性能监视控制寄存器(0xC0) 2.9 H2C通道周期计数性能寄存器(0xC4、0xC8) 2

一个早起的程序员 5205

GCC 编译链接命令用法

gcc 是编译最基本的命令,网上摘录其他一些信息整理,以备查阅

qianshanxue11的博客 1万+

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2834

vue3 - 详细实现用户收货地址识别解析“姓名/手机号/省市区/街道/乡镇村庄“关键字,用户复制粘贴一段含有姓名电话/详细地址的文字文本信息,vue3自动识别拆分并填入到对应表单字段中,详细示例代码

vue3,nuxt3,快递地址读取,收货地址解析、快递地址解析、物流地址解析自动识别,收货地址解析,从发货地址中拆出姓名电话地址,根据粘贴的字符串提取姓名地址,vue3地址信息自动识别,ts,vue3智能识别地址,提取姓名电话地址信息,自动识别出省市区街道姓名手机号等,根据文本自动解析出收货信息,怎么识别文本中的手机号,粘贴板地址识别,地址智能识别,如何识别收货地址中的关键字,粘贴一段文字后,自动识别到姓名/手机号/收货地址,vue3仿淘宝地址智能识别解析实现,省市区街道智能解析,vue3收货地址,识别地址

✅ 精选推荐文章 5501

C语言中主函数调用另外一个函数,汇编代码理解

通过汇编代码,分析函数调用的底层过程

kk的任意门 2788

基于YOLOv8的城市违建识别系统:从数据集构建到UI界面实现

YOLOv8是Ultralytics公司于2023年推出的最新一代YOLO(You Only Look Once)系列目标检测算法。更高效的骨干网络设计改进的锚框机制更精确的损失函数支持分类、检测、分割等多任务YOLOv8特别适合像违建识别这样的实时检测任务,能够在保持高精度的同时实现快速推理。

YOLO 674

gcc链接外部函数库,比如数学函数库

摘自http://hi.baidu.com/newyork_zero/blog/item/601ab9d7af1913ce50da4b16.html 链接外部库(摘子ubuntu中文论坛) 库是预编译的目标文件(object files)的集合,它们可被链接进程序。静态库以后缀为‘.a’的特殊的存档文件(archive file)存储。 标准系统库可在目录 /usr/lib 与 /lib 中

liming0931的专栏 7089

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

GCC 编译

Linux Makefilehttp://blog.youkuaiyun.com/ruglcc/article/details/7814546/单一程序,打印 Hello World!直接编译编译程序源码,即源码 vim hello.c 内容如下:#include <stdio.h> void main() { printf("Hello World!"); } 开始编译与测试执行 gcc he

谢军的博客 545

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

gcc/g++学习笔记(1)

在链接的时候,要注意链接库里面的函数使用情况。gcc在搜索外部函数的时候是给gcc的参数里面从左到右的顺序来搜索的。<br /> 举个例子:<br /> gcc -o test test.cpp -lA<br /> 在这个例子里面,A库里面定义了foo函数,而test.cpp里面调用了foo函数,那么-lA就必须放在test.cpp的后(右)面。如果将test.cpp和-lA的位置对调,那么就会出现undefined reference的错误。<br /> 同时这样的关系会出现在库也库之间,这样的时

airekans的专栏 570

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

linux编译c程序 .h,linux GCC编译C程序-Go语言中文社区

linux GCC编译C程序GCC已不再是主要针对GNU项目自身的软件的小型C语言编译器了。如今,它已支持了许多不同的语言,包括C、C++、Ada、Fortran、Objective C,甚至还有Java。利用gcc原理上是经过两步编译的,分别生成目标代码和Linux可执行程序。1. 编译单个源文件hello_linux.c#include#includeint main(int argc,cha...

weixin_33721696的博客 359

Linux下GCC编译C语言

Linux下GCC编译C语言 1.创建一个.C文件 # vi/vim hello.c 2.编译name.c文件,生成可执行文件 # gcc hello.c 3.执行文件,在默认情况下产生的可执行程序名为a.out # ./a.out 4.通常可以通过gcc的“-o”选项来指定自己的可执行程序名称。 # gcc -o hello hello.c 生成可执行文件 name 执行: # ./hello 5.使用gcc的“-c”标记来编译支持库代码(对多个文件进行编译) # gcc -c hello.c 输出结

qq_44877135的博客 2012

linux 下初学使用gcc编程

gcc是GNU C Compiler的缩写,是Linux下一款功能强大的编译器。它支持多种硬件平台,并且编译出的可执行代码执行效率较高。下面我们就一起学习如何使用它。        首先,简单介绍一下程序的编译与链接原理。c语言是一种高级语言,它的编译过程分为预编译和编译两个过程。预编译过程主要是对源程序中的伪代码(以#开头的指令)和符号进行处理的过程。经过预编译处理后,将生成一个没有宏定义/没

highcool 1061

[Makefile] 第一章:GCC的简易用法

hello.c (主程序)\n");thank();return 0;thanks.c (子程序)先对 hello.c 和 thanks.c 编译,再将 hello.o 和 thanks.o 链接到可执行文件 hello由于我们的源代码文件有时并非仅只有一个文件,所以我们无法直接进行编译。这个时候就需要先产生目标文件,然后再以链接制作成为二进制可执行文件。

庐陵居士 683

简单的makefile

单一程序 准备一个hello.c #include <stdio.h> int main(void) { printf("Hello World!\n"); } gcc hello.c,执行文件名被自动设置成a.out,可用./a.out直接执行,因为这是编译成功的可执行二进制程序 gcc -c hello.c产生目标文件hello.o gcc -o hello hello.o...

weixin_30297281的博客 125

Linux——Gcc

1. Gcc简介 GCC 原名为 GNU C Compiler,是一个用于Linux系统下编程的编译器。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意...

weixin_30823227的博客 102

【Linux】使用gcc调试程序

🥇🥇程序写好了接下来做的就是调试程序,程序的调试对于程序员或者Linux管理员来说也是至关重要的。🥇🥇后期会持续更新我学习Linux以及在运维领域的学习记录,如果本篇文章对你有帮助,恳请大家支多多支持哦~

默默发展,无声壮大~ 2986
上一篇: Shell Makefile 中的符号
下一篇: Visual.Assist.X 试用期过期,重装的种种问题
Alan0521
博客等级 码龄19年 77粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值