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



我想从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的静态库。

最后,你用编译你的main

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

注意,在-l标志中;lib";和";。a";,这些是自动添加的。-L。flag告诉gcc在当前文件夹中查找库文件。

相关内容

  • 没有找到相关文章

最新更新