永发信息网

linux下能生成两种.o的文件 一个是我用gcc编译生成的 另一个是makefile生成的,这俩一样么?

答案:2  悬赏:80  手机版
解决时间 2021-01-04 13:27
  • 提问者网友:王者佥
  • 2021-01-03 12:31
这两个不同的.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文件也不一样么?
最佳答案
  • 五星知识达人网友:千杯敬自由
  • 2021-01-22 06:54
一样的,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,之后肯定能运行。
全部回答
  • 1楼网友:封刀令
  • 2021-01-22 08:16
我。。知。。道 加。。我。。私。。聊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯