Linux下,如何将*.o文件生成可执行文件?

wangzhongke1983 2008-04-04 02:11:51
我用g++ -o main main.o

报错

...全文
7971 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanb99 2008-04-09
  • 打赏
  • 举报
回复
.o文件是目标文件,可以通过ld链接生成可执行文件,它不是必须生成的,如果你用-o参数,编译器不会单独
生成.o文件,直接生成一个可执行文件
可以看一下关于gcc的参数介绍
hanb99 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mymtom 的回复:]
引用 7 楼 wangzhongke1983 的回复:
引用 6 楼 yecheng_110 的回复:
1、g++ -c main.c
生成main.o
2、g++ -o main main.o
生成main


太感谢你了。。。。。

我先是 g++ -o main.o main.cpp 没有问题,也生成了*.o文件

但是 接着g++ -o main main.o 就报错了。错误信息是系统的.o文件定义错误

为什么呀?

怎么不把错误信息完整的贴上来?
[/Quote]

LZ你弄错了 g++ -o main.o main.cpp 这句生成的main.o就是可执行文件,你要生成.o文件要用g++ -c main,o main.cpp这句,你把一个可执行文件再生成一个可执行文件,这是不对的
mymtom 2008-04-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mymtom 的回复:]
Perl code## Makefile
#PROG=edit
OBJS=main.o test.o#NAMES = main.cpp test.cppVPATH=./action#vpath %.cpp ./action

# INCLUDEDIR = -I./includeCFLAGS=-I./include
RM=rm-rf

all:$(PROG)

edit:$(OBJS)
$(CXX) $(CFLAGS)-o $@ $(LDFLAGS) $(OBJS) $(LDLIBS)

clean:$(RM) $(PROG) $(OBJS)
$(RM) core*.core core.*

[/Quote]
sakaonline 2008-04-09
  • 打赏
  • 举报
回复
g++ -o main main.c 直接生成可执行文件不就行了么
zeloas 2008-04-09
  • 打赏
  • 举报
回复
结论是LZ的参数弄错了,用按照lz的-o参数已经生成可执行文件main.o,不需要后续的操作了
过客猫2022 2008-04-09
  • 打赏
  • 举报
回复
路过
wangzhongke1983 2008-04-08
  • 打赏
  • 举报
回复
还是报错 我把错误信息贴上来

[root@localhost 123]# make
g++ -c -o main.o main.cpp
main.cpp:3:18: test.h: そのようなファイルやディレクトリはありません
main.cpp: In function `int main()':
main.cpp:8: error: `test' was not declared in this scope
make: *** [main.o] エラー 1

意思就是没找到头文件~~~~
mymtom 2008-04-08
  • 打赏
  • 举报
回复

#
# Makefile
#
PROG = edit
OBJS = main.o test.o

# NAMES = main.cpp test.cpp

VPATH = ./action
# vpath %.cpp ./action

# INCLUDEDIR = -I./include
CFLAGS = -I./include
RM = rm -rf

all: $(PROG)

edit: $(OBJS)
$(CXX) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LDLIBS)

clean:
$(RM) $(PROG) $(OBJS)
$(RM) core *.core core.*

wangzhongke1983 2008-04-08
  • 打赏
  • 举报
回复
up
wangzhongke1983 2008-04-08
  • 打赏
  • 举报
回复
up
mymtom 2008-04-08
  • 打赏
  • 举报
回复
好像另外一个帖子也是这个问题?
放完整的Makefile吧.

#
# Makefile
#
PKG = edit-1.0
PROG = edit
OBJS = main.o test.o
HDRS = test.h

SRCDIR = action
HDRDIR = include

VPATH = ./$(SRCDIR):./$(HDRDIR)
CFLAGS = -I./$(HDRDIR)
RM = rm -rf

all: $(PROG)

edit: $(OBJS)
$(CXX) $(CFLAGS) -o $@ $(LDFLAGS) $(OBJS) $(LDLIBS)

clean:
$(RM) $(PROG) $(OBJS)
$(RM) core *.core core.*

dist:
tar cf - Makefile $(SRCDIR) $(HDRDIR) | gzip > $(PKG).tar.gz
wangzhongke1983 2008-04-08
  • 打赏
  • 举报
回复
楼上,不要灌水~~~,我还等解决方案呢~~~
老腊肉泡酒 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mymtom 的回复:]
报什么错啊!
说出来嘛.
你不说出来我怎么知道......
[/Quote]ih jtg jtg
wangzhongke1983 2008-04-07
  • 打赏
  • 举报
回复
up
wangzhongke1983 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mymtom 的回复:]
引用 7 楼 wangzhongke1983 的回复:
引用 6 楼 yecheng_110 的回复:
1、g++ -c main.c
生成main.o
2、g++ -o main main.o
生成main


太感谢你了。。。。。

我先是 g++ -o main.o main.cpp 没有问题,也生成了*.o文件

但是 接着g++ -o main main.o 就报错了。错误信息是系统的.o文件定义错误

为什么呀?

怎么不把错误信息完整的贴上来?
[/Quote]

大哥,商业机密啊,哪能随便发啊~~~

顺便再问你个问题,关于makefile的

以下是我makefile的内容

OBJS = main.o test.o

NAMES = main.cpp test.cpp

VPATH = ./action

vpath = ./:./action

INCLUDEDIR = -I./include

edit:
g++ -c $(NAMES)
g++ -o edit $(OBJS)



注意g++前是tab键

其中,test.cpp在action 文件夹中,test.h 在include文件夹中

我用VPATH 和 vpath 都不好用 说找不到test.cpp文件

帮帮~~~~~~
mymtom 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangzhongke1983 的回复:]
引用 6 楼 yecheng_110 的回复:
1、g++ -c main.c
生成main.o
2、g++ -o main main.o
生成main


太感谢你了。。。。。

我先是 g++ -o main.o main.cpp 没有问题,也生成了*.o文件

但是 接着g++ -o main main.o 就报错了。错误信息是系统的.o文件定义错误

为什么呀?
[/Quote]
怎么不把错误信息完整的贴上来?
wangzhongke1983 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yecheng_110 的回复:]
1、g++ -c main.c
生成main.o
2、g++ -o main main.o
生成main
[/Quote]

太感谢你了。。。。。

我先是 g++ -o main.o main.cpp 没有问题,也生成了*.o文件

但是 接着g++ -o main main.o 就报错了。错误信息是系统的.o文件定义错误

为什么呀?
yecheng_110 2008-04-07
  • 打赏
  • 举报
回复
1、g++ -c main.c
生成main.o
2、g++ -o main main.o
生成main
长安宁 2008-04-07
  • 打赏
  • 举报
回复
我用g++ -o main main.o

报错

这个-o 已经是生成的二进制可执行文件了;

你可以用 gcc -c main 来生成一个main.o

然后 gcc main.o 来生成 a.out
yangsf5 2008-04-06
  • 打赏
  • 举报
回复
晕,又是不说具体的错误的。。
建议看看“提问的智慧”一文。。
加载更多回复(3)

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧