博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Keil5.15使用GCC编译器链接.a库文件
阅读量:6404 次
发布时间:2019-06-23

本文共 1078 字,大约阅读时间需要 3 分钟。

我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人仅仅要提供header文件给你,则你就能够通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中假设使用ARMCC调用Lib文件,相信大家都能从网上找到方法.那假设在Keil中使用GCC来链接第三方GCC编译好的Lib文件——".a"应该怎样呢?在告诉大家方法之前,我们写个简单的函数,然后用GCC编译器编译产生.a文件,便于我们进行測试.首先,在Keil中配置gcc编译环境,这个能够參考我的文章.

,里面有交大家配置方法.

接下来,将project配置成生成库方式.这个跟Keil ARMCC的方式非常像.
这里写图片描写叙述
最后,写上自己測试代码.
库文件的NiipLib.c文件代码:

int NiipLib_GetValue(unsigned char* pBuffer,int nSize){    int nIndex = 0;    for(nIndex = 0;nIndex 

库文件的NiipLib.h文件代码:

#ifdef __cplusplusextern "C" {#endifint NiipLib_GetValue(unsigned char* pBuffer,int nSize); #ifdef __cplusplus}#endif
点击编译,我们能够在编译输出文件夹下得到"libNiipLib.a"文件.接着,我们就要在另外个project引用这个库文件了.将"libNiipLib.a"文件与"NiipLib.h"复制到自己新建的或者已存在的项目以下.以下图片的重点来了,请大家留意一下,開始"找不同"或者"大家来找茬".

这里写图片描写叙述

细心的人,会发现为什么我"Include Libraries"这个地方,为什么填写的是"NiipLib"为什么不是"libNiipLib.a"?

事实上,我開始也填写"libNiipLib.a",但编译器老提示无法找到"libNiipLib.a"这个文件.我真的想说FUCK.在网上搜索了一下,发现GCC有个变态的情况,叫做"隐式约定命名规则". 什么叫做"隐式约定命名规则"?用别人的解释

-ltest 表示要链接动态库libtest.a文件,这是gcc隐式约定命名规则。也就是库名带lib头,比方libtest.a,而在链接參数上则不带,比方-ltest就表示要链接libtest.a

而我的理解就是,你要调用什么.a文件,你仅仅需去掉文件名称前缀的"lib"及后缀的".a",就能够了。測试结果:

这里写图片描写叙述

来自:

你可能感兴趣的文章
Django form表单
查看>>
CTYL-9.14(tomcat端口与阿里云安全组,域名与tomcat配置,域名与反向代理)
查看>>
古风男孩美名推荐分享
查看>>
Hadoop的命令
查看>>
Android 7.0 PopupWindow显示错位问题
查看>>
源码编译安装PHP5、PHP7
查看>>
Java 多线程相关问题记录
查看>>
LNMP架构介绍、MySQL安装、PHP安装、 Nginx介绍
查看>>
es6 class 笔记
查看>>
使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
查看>>
简单的Spark+Mysql整合开发
查看>>
web.xml里的errorpage的用法
查看>>
阿里java面试经验大汇总(附阿里职位需求)
查看>>
Python全套零基础视频教程+软件2018最新编程视频!
查看>>
内存管理之1:x86段式内存管理与保护模式
查看>>
Java的GC与内存分配策略
查看>>
20180925上课截图
查看>>
爬虫到底是什么?python爬虫基础知识
查看>>
C++ STL 学习笔记
查看>>
iPhone撑不住了!苹果表示有意调整
查看>>