如何使用 arm-none-eabi-gcc 为 ARM 项目创建和 link 静态库?
How to create and link a static library for an ARM project using arm-none-eabi-gcc?
我想从 mylib.c/.h 和 link 创建一个静态库 libmylib.a 到一个项目,以便使用 arm-[=26 在引导加载程序代码中使用这个库=]-eabi-gcc 交叉编译器 ubuntu 20.04 LTS.
我有电子工程背景,所以我是这个编译器和 linker 东西的新手。
我所知道的:
我一直在搜索这个,发现'.a'只是打包的'.o'文件,仅此而已。您可以使用 linux 中的 ar 来完成。例如,我不知道如何管理这个“.a”文件的依赖关系,或者如何 link 它到项目中。
我想知道的:
我真的很想了解它是如何工作的,使用 arm-none-eabi-gcc 交叉编译器使用这些静态库编译和生成 bin、elf 或 hex 文件(为 linux 找到一些) ), 但我不知道如何正确地搜索它,如何以线性方式学习它。如果你们能帮助我,我将不胜感激。
首先创建库对象。假设您有一个用 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。 flag 告诉 gcc 查看当前文件夹中的库文件。
我想从 mylib.c/.h 和 link 创建一个静态库 libmylib.a 到一个项目,以便使用 arm-[=26 在引导加载程序代码中使用这个库=]-eabi-gcc 交叉编译器 ubuntu 20.04 LTS.
我有电子工程背景,所以我是这个编译器和 linker 东西的新手。
我所知道的: 我一直在搜索这个,发现'.a'只是打包的'.o'文件,仅此而已。您可以使用 linux 中的 ar 来完成。例如,我不知道如何管理这个“.a”文件的依赖关系,或者如何 link 它到项目中。
我想知道的: 我真的很想了解它是如何工作的,使用 arm-none-eabi-gcc 交叉编译器使用这些静态库编译和生成 bin、elf 或 hex 文件(为 linux 找到一些) ), 但我不知道如何正确地搜索它,如何以线性方式学习它。如果你们能帮助我,我将不胜感激。
首先创建库对象。假设您有一个用 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。 flag 告诉 gcc 查看当前文件夹中的库文件。