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

如何使用ARM none eabi gcc为ARM项目创建和链接静态库?,gcc,static,arm,Gcc,Static,Arm,我想从mylib.c/.h创建一个静态库libmylib.a,并将其链接到一个项目,以使用ubuntu 20.04 LTS中的arm none eabi gcc交叉编译器在引导加载程序代码中使用该库 我有电子工程背景,所以我对这个编译器和链接器的东西有点陌生 据我所知: 我一直在搜索这个,发现“.a”刚刚打包了“.o”文件,就是这样。您可以在linux中使用ar实现。例如,我不知道如何管理“.a”文件的依赖关系,或者如何将其链接到项目 我想知道的是: 我真的很想了解它是如何工作的,使用arm n

我想从mylib.c/.h创建一个静态库libmylib.a,并将其链接到一个项目,以使用ubuntu 20.04 LTS中的arm none eabi gcc交叉编译器在引导加载程序代码中使用该库

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

据我所知: 我一直在搜索这个,发现“.a”刚刚打包了“.o”文件,就是这样。您可以在linux中使用ar实现。例如,我不知道如何管理“.a”文件的依赖关系,或者如何将其链接到项目

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

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

arm-none-eabi-gcc -c foo.c
c选项告诉编译器在组装后停止,不再继续

然后您需要创建.a文件

arm-none-eabi-ar -rc libfoo.a foo.o
此命令创建一个名为libfoo.a的静态库

最后,您可以使用以下工具编译主代码:

arm-none-eabi-gcc -L. -lfoo main.c -o main

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

创建一个对象(gcc),然后将其添加到库中。然后将档案与想要使用它的项目链接起来。arm-none-eabi-arthanks伙计们,不要那么复杂:)Thaaanks,现在我明白我要做什么了!真的很欣赏:)