幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3086|回复: 6

[求助]MAKEFILE使用中时出现的问题

[复制链接]

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-10-1 22:29:41 | 显示全部楼层 |阅读模式
在使用HGE时....自己手动写了一个makefile做测试
HGE_PATH=-Ie:/extralibraries/hge/hge17/include
HGE_LIB_DIR=e:/extralibraries/hge/hge17/lib/gcc/libhge.a
main:main.o
    g++  main.o -o main.exe
main.o:main.cpp
    g++ -Wall -Wextra -pedantic -c main.cpp ${HGE_PATH} ${HGE_LIB_DIR} -o main.o
在MAKE时出现:
g++  main.o -o main.exe
main.o:eh_throw.cc.text+0x280): multiple definition of `mainCRTStartup'
/mingw/lib/crt2.o:crt1.c.text+0x280): first defined here
main.o:eh_throw.cc.text+0x2a0): multiple definition of `WinMainCRTStartup'
/mingw/lib/crt2.o:crt1.c.text+0x2a0): first defined here
main.o:eh_throw.cc.text+0x2c0): multiple definition of `atexit'
/mingw/lib/crt2.o:crt1.c.text+0x2c0): first defined here
main.o:eh_throw.cc.text+0x2d0): multiple definition of `_onexit'
/mingw/lib/crt2.o:crt1.c.text+0x2d0): first defined here
main.o: In function `_gxx_personality_sj0':
e:/gcc-4.2.1/mingw32/libstdc++-v3/libsupc++/../../.././libstdc++-v3/libsupc++/eh_personality.cc:640: multiple definition of `_argc'
/mingw/lib/crt2.o:crt1.c.bss+0x4): first defined here
main.o: In function `_gxx_personality_sj0':
e:/gcc-4.2.1/mingw32/libstdc++-v3/libsupc++/../../.././libstdc++-v3/libsupc++/eh_personality.cc:640: multiple definition of `_argv'
/mingw/lib/crt2.o:crt1.c.bss+0x0): first defined here
collect2: ld returned 1 exit status
mingw32-make: *** [main] Error 1

但是换一种方式却可以通过
HGE_PATH=-Ie:/extralibraries/hge/hge17/include
HGE_LIB_DIR=e:/extralibraries/hge/hge17/lib/gcc/libhge.a
main:main.o
    g++  main.cpp  ${HGE_PATH} ${HGE_LIB_DIR} -o main.exe
应该如何解释????
签名要少于60,SO,i haven't upload my pic
回复

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-10-1 23:19:40 | 显示全部楼层
试试看在上面那个
main.o:main.cpp
    g++ -Wall -Wextra -pedantic -c main.cpp ${HGE_PATH} ${HGE_LIB_DIR} -o main.o
中把-o去掉…………

偶一般用NMAKE的,-out参数通常是在LINK的时候才使用……
Style-C
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
 楼主| 发表于 2007-10-1 23:32:08 | 显示全部楼层
失败效果还是一个样子...
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
 楼主| 发表于 2007-10-1 23:33:57 | 显示全部楼层
话说如果要是没有-o的话好像连编译也无法进行吧
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
 楼主| 发表于 2007-10-2 07:09:21 | 显示全部楼层
已解决.....
HGE_PATH=-Ie:/extralibraries/hge/hge17/include
HGE_LIB_DIR=e:/extralibraries/hge/hge17/lib/gcc/libhge.a
main:main.o
    g++  main.o ${HGE_PATH} ${HGE_LIB_DIR} -o main.exe
main.o:main.cpp
    g++ -Wall -Wextra -pedantic -c main.cpp ${HGE_PATH}
这样就KO了...看来还是对参数不熟啊.....  [s:5]
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-10-2 08:05:40 | 显示全部楼层
嗯,你的LIBDIR居然使用了一个文件,那个名字就应该直接用XXXLIB ^^
通常XXX_DIR表示一个引用的路径~
也怪自己不看仔细~

多玩玩就可以了,其实偶也打算学GNU MAKE,因为NMAKE不支持内插循环,有时候简单的问题会比较难以处理,还得先用BAT等处理掉循环的东西……

PS:HGE1.7拉……
Style-C
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
 楼主| 发表于 2007-10-2 08:52:41 | 显示全部楼层
事实上本来是LIB的路径...后来临时替换了....
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-4 01:35 , Processed in 0.024298 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表