linux下能生成两种.o的文件 一个是我用gcc编译生成的 另一个是makefile生成的,这俩一样么?
这两个不同的.o文件好像不太一样,那个makefile生成的.o文件不能运行,但是我用“gcc-ohelloworld.ohelloworld.c”生成的hellowor...
这两个不同的.o文件好像不太一样,那个makefile生成的.o文件不能运行,但是我用“gcc -o helloworld.o helloworld.c” 生成的helloworld.o文件能运行,可是makefile里边
“CC=arm_v5t_le-gcc
EXEC=hello
OBJS=hello.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) -o $@ $(OBJS)
clean:
-rm -f $(EXEC)*.o”
生成了俩 一个hello 一个hello.o 都不能在linux下运行 hello可以在我连接arm后用超级终端运行 不明白这是为啥 .o文件也不一样么? 展开
“CC=arm_v5t_le-gcc
EXEC=hello
OBJS=hello.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) -o $@ $(OBJS)
clean:
-rm -f $(EXEC)*.o”
生成了俩 一个hello 一个hello.o 都不能在linux下运行 hello可以在我连接arm后用超级终端运行 不明白这是为啥 .o文件也不一样么? 展开
1个回答
展开全部
一样的,makefile只是一个脚本,它实际调用的是gcc。
但你这里用“gcc -o helloword.o helloworld.c”调用的是linux(x86的)的标准gcc,而你的makefile脚本中的gcc版本是arm_v5t_le-gcc(是用在arm嵌入式处理器的)。两个处理器不一样,自然编译出的helloworld.o不一样,前者只能在x86电脑上运行,后者只能在arm嵌入式处理机中运行。
你把makefile中的“CC=arm_v5t_le-gcc”改成“CC=gcc”然后再make,之后肯定能运行。
但你这里用“gcc -o helloword.o helloworld.c”调用的是linux(x86的)的标准gcc,而你的makefile脚本中的gcc版本是arm_v5t_le-gcc(是用在arm嵌入式处理器的)。两个处理器不一样,自然编译出的helloworld.o不一样,前者只能在x86电脑上运行,后者只能在arm嵌入式处理机中运行。
你把makefile中的“CC=arm_v5t_le-gcc”改成“CC=gcc”然后再make,之后肯定能运行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询