我想从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上找到了一些),但我不知道如何正确地搜索它,如何以线性的方式学习它。如果你们能在这件事上帮我,我会非常感激。
发布于 2020-09-07 22:47:58
首先,创建您的库对象。假设您有一个用foo.c编写的foo函数,那么您可以这样做:
arm-none-eabi-gcc -c foo.c
-c选项告诉编译器在汇编后停止,不再前进。
然后,您需要创建.a文件
arm-none-eabi-ar -rc libfoo.a foo.o
此命令创建名为libfoo.a的静态库
最后,使用以下命令编译main:
arm-none-eabi-gcc -L. -lfoo main.c -o main
请注意,在-l标志中,我们没有添加"lib“和".a",它们是自动添加的。-L。flag告诉gcc在当前文件夹中查找库文件。
https://stackoverflow.com/questions/63709253
复制相似问题