【发布时间】:2012-10-19 20:31:14
【问题描述】:
我正在尝试使用 -m32 标志编译一个非常简单的程序。
如果我尝试使用 gcc -m32 执行此操作,它工作得很好(我有所需的库)
然而,当我将此标志添加到 makefile 中的标志时,我收到一个奇怪的错误
这是我的makefile
CC=gcc
CFLAGS=-m32 -O1 -W -Wall -pedantic -std=c99
all: main.o
$(CC) -o main main.o
rm main.o
clean:
rm main
我收到的错误如下
gcc -o main main.o
/usr/bin/ld: i386 architecture of input file `main.o' is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status
make: *** [all] Error 1
谁能告诉我这是什么意思?我该如何解决?
至于代码,代码除了打印'hello world'之外什么都不做
我在 Linux 2.6.35 64 位下使用 GCC 4.4.3
【问题讨论】:
-
能把编译main.c的那一行加到main.o吗?
-
@TomAhh: make 有一个implicit rule 用于从
.c文件编译.o文件 -
@AdamRosenfield 哦。好的,那对不起。 :)
-
既然是靠隐式规则来制作
main.o,为什么不也用隐式规则来制作main呢?您没有通过$(CFLAGS),但隐式规则会这样做。使用隐式规则。 -
@zakkak 如果没有明确给出规则,则将使用单个后缀规则
.c,它同时使用:$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<