0

这是我的制作文件

EXE     = signsrch
CFLAGS  += -s -O2
PREFIX  = /usr/local
BINDIR  = $(PREFIX)/bin
SRC     = $(EXE).c

all:
    $(CC) $(CFLAGS) -c disasm.c
    $(CC) $(CFLAGS) -c asmserv.c
    $(CC) $(SRC) $(CFLAGS) -o $(EXE) *.o

install:
    install -m 755 -d $(BINDIR)
    install -m 755 $(EXE) $(BINDIR)/$(EXE)

.PHONY:
    install

我想为我的ubuntu交叉编译它,我试过:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

但我收到一堆“DWORD”的未知类型名称错误

帮助?

4

2 回答 2

1

要交叉编译,您需要目标平台的工具链,而不仅仅是 Makefile。检查本教程Cygwin

于 2012-11-06T20:42:31.247 回答
1

我们还需要看一些代码,但是......

Windows 在 vanilla C 之上有自己的基本类型,Linux 也是如此。听起来 DWORD 作为一种类型在 Linux 中是未知的(可能)。在为 Linux 平台构建时,您可能必须创建一个 mytypes.h 文件,将 DWORD 等 Windows 标准重新定义为 Linux 语言。Linux 有 types.h 定义了类似 int32_t 的东西,它是等价的。有关更多信息,请参阅此线程

我假设您设置了一个有效的交叉编译器,并且您只是在使用端口。如果你没有,那是你的第一份工作。你可以有一个基于 Windows 的编译器,它以 Linux 为目标(cygwin 选项,在另一篇文章中提到),或者选择一个基于 Linux 的编译器和目标窗口(crosstool 在这里会有所帮助)。虽然由于您似乎以 arm 为目标,但我希望 Ubuntu 安装不是您想要构建的地方!:-)

于 2012-11-06T20:45:01.530 回答