如何解决如何使用arm-none-eabi-gcc为ARM项目创建和链接静态库?
我想从mylib.c / .h创建一个静态库libmylib.a并将其链接到一个项目,以使用Ubuntu 20.04 LTS中的arm-none-eabi-gcc交叉编译器在引导加载程序代码中使用此库。 / p>
我具有电子工程学背景,因此在此编译器和链接器方面属于新手。
我所知道的: 我一直在搜索此文件,发现'.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查看当前文件夹中的库文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。