gpt4 book ai didi

linux - 用于 arm-linux-gcc 的 C/C++ 目标的简单 makefile

转载 作者:IT王子 更新时间:2023-10-29 01:14:28 24 4
gpt4 key购买 nike

我想使用 arm-linux-gcc 编译器套件 [arm-linux-gcc (Buildroot 2011.08) 4.3.6] 交叉编译一个简单的 ARM 架构程序。我尝试使用一个简单的 makefile 来编译 C 代码,并使用另一个简单的 makefile 来编译 C++ 代码。例如,下面复制了我的 C 代码生成文件,但它没有创建用于在我的嵌入式系统上运行的 ELF 二进制文件。主机系统是 x64 GNU Linux。

这是我为 C 程序编写的非常简单的 makefile 的 list :

CC=arm-linux-gcc
CFLAGS=-Wall
main: test.o

clean:
rm -f test test.o

上面复制的makefile只创建了一个扩展名为.o的目标文件,并没有创建ELF二进制文件。

我用 Google 搜索了一个好的解决方案,但我似乎找不到一个网页显示 C 和 C++ 程序的交叉编译 ARM 联编文件示例。也许这篇文章的答案可以展示这样的例子。

最佳答案

查看 GNU make 手册(info make),Section 10.2 .它有一个隐式规则目录,即您不需要显式声明命令的规则。正如@GregHewgill 所想,“链接单个目标文件”隐式规则从N.o 构建N,但名称必须匹配。因此,您可以像目标文件一样命名可执行文件,在这种情况下

test:

或(更标准,因为它定义了 all 目标)

all : test

完全够了。您也可以明确地写出规则,就像 Greg Hewgill 也描述的那样。在这种情况下,标准规则是:

 $(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)

在您的 Makefile 中包含 LDFLAGS 和 LDLIBS,它使用户的生活更轻松。

(原文如此:我认为 LOADLIBES 确实是 LOADLIBS,而作者错过了 -o)。

总的来说,我建议使用 autoconfautomake 而不是手动生成文件。只需很少的工作即可为您提供大量 Makefile 功能。

关于linux - 用于 arm-linux-gcc 的 C/C++ 目标的简单 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com