首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用arm-none-eabi-gcc为ARM项目创建和链接静态库?

如何使用arm-none-eabi-gcc为ARM项目创建和链接静态库?
EN

Stack Overflow用户
提问于 2020-09-03 00:01:44
回答 1查看 908关注 0票数 1

我想从mylib.c/.h创建一个静态库libmylib.a,并将其链接到一个项目,以便使用ubuntu 20.04 LTS中的arm-none-eabi- this交叉编译器在bootloader代码中使用该库。

我有电子工程的背景,所以我对这个编译器和链接器的东西有点陌生。

我所知道的:我一直在搜索这个,发现'.a‘只是打包的'.o’文件,仅此而已。您可以在linux中使用ar来执行此操作。例如,我不知道如何管理这个'.a‘文件的依赖关系,也不知道如何将它链接到项目。

我想知道的是:我真的很想了解它是如何工作的,用arm的这些静态库编译和生成bin,elf或十六进制文件,使用arm-none-eabi-gcc交叉编译器(在linux上找到了一些),但我不知道如何正确地搜索它,如何以线性的方式学习它。如果你们能在这件事上帮我,我会非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 22:47:58

首先,创建您的库对象。假设您有一个用foo.c编写的foo函数,那么您可以这样做:

代码语言:javascript
运行
复制
arm-none-eabi-gcc -c foo.c

-c选项告诉编译器在汇编后停止,不再前进。

然后,您需要创建.a文件

代码语言:javascript
运行
复制
arm-none-eabi-ar -rc libfoo.a foo.o

此命令创建名为libfoo.a的静态库

最后,使用以下命令编译main:

代码语言:javascript
运行
复制
arm-none-eabi-gcc -L. -lfoo main.c -o main

请注意,在-l标志中,我们没有添加"lib“和".a",它们是自动添加的。-L。flag告诉gcc在当前文件夹中查找库文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63709253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档