Zelsazgh 发表于 2007-10-1 22:29:41

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

在使用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: *** 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
应该如何解释????

lw 发表于 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的时候才使用……

Zelsazgh 发表于 2007-10-1 23:32:08

失败效果还是一个样子...

Zelsazgh 发表于 2007-10-1 23:33:57

话说如果要是没有-o的话好像连编译也无法进行吧

Zelsazgh 发表于 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了...看来还是对参数不熟啊.....

lw 发表于 2007-10-2 08:05:40

嗯,你的LIBDIR居然使用了一个文件,那个名字就应该直接用XXXLIB ^^
通常XXX_DIR表示一个引用的路径~
也怪自己不看仔细~

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

PS:HGE1.7拉……

Zelsazgh 发表于 2007-10-2 08:52:41

事实上本来是LIB的路径...后来临时替换了....
页: [1]
查看完整版本: [求助]MAKEFILE使用中时出现的问题