作者lleyfede (ARod)
看板EE_DSnP
标题[问题] undefined reference to...
时间Thu Dec 3 22:43:16 2009
想说要测试一下-O3的威能,就按照版上的文
将(1)src/Makefile.in 的 -g 改成 -O3
(2)Makefile 的 @strip bin/$(EXEC) 前的 # 拿掉
但是,先经过 make clean 再 make a 或 d 时,
会出现以下的error message:
Cleaning util...
make[1]: *** No rule to make target `dlist', needed by `.depend.mak'. Stop.
Cleaning main...
Removing libutil.a...
Removing adtTest.dlist...
Checking util...
make[1]: *** No rule to make target `dlist', needed by `.depend.mak'. Stop.
Checking main...
> compiling: adtTest.cpp
> compiling: main.cpp
> building adtTest.dlist...
adtTest.o: In function `AdtResetCmd::exec(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
adtTest.cpp:(.text+0x190): undefined reference to
`myStr2Int(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int&)'
adtTest.o: In function `AdtPrintCmd::exec(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
adtTest.cpp:(.text+0xbf5): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0xe9d): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.o: In function `AdtDeleteCmd::exec(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
adtTest.cpp:(.text+0xfc9): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x1196): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x11d9): undefined reference to
`myStr2Int(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int&)'
adtTest.cpp:(.text+0x12af): undefined reference to `rnGen'
adtTest.cpp:(.text+0x1377): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x13c8): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x1419): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.o: In function `AdtAddCmd::exec(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
adtTest.cpp:(.text+0x17db): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x1828): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
adtTest.cpp:(.text+0x185a): undefined reference to
`myStr2Int(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int&)'
adtTest.cpp:(.text+0x1949): undefined reference to
`myStr2Int(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int&)'
main.o: In function `main':
main.cpp:(.text+0x43b): undefined reference to `myUsage'
main.cpp:(.text+0x455): undefined reference to `myUsage'
main.cpp:(.text+0x45d): undefined reference to `myUsage'
main.cpp:(.text+0x463): undefined reference to `myUsage'
main.cpp:(.text+0x697): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
../../lib/libcmd.a(cmdCommon.o): In function
`HistoryCmd::exec(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)':
cmdCommon.cpp:(.text+0x442): undefined reference to
`myStr2Int(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int&)'
../../lib/libcmd.a(cmdCommon.o): In function
`QuitCmd::exec(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)':
cmdCommon.cpp:(.text+0xd59): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
cmdCommon.cpp:(.text+0xea6): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
../../lib/libcmd.a(cmdCommon.o): In function
`UsageCmd::exec(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)':
cmdCommon.cpp:(.text+0x12f6): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x1326): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x1334): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x133f): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x1345): undefined reference to `myUsage'
../../lib/libcmd.a(cmdCommon.o):cmdCommon.cpp:(.text+0x1367): more undefined
references to `myUsage' follow
../../lib/libcmd.a(cmdCommon.o): In function
`UsageCmd::exec(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)':
cmdCommon.cpp:(.text+0x153f): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
cmdCommon.cpp:(.text+0x1696): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x169b): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x16c5): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x16cb): undefined reference to `myUsage'
cmdCommon.cpp:(.text+0x1823): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
cmdCommon.cpp:(.text+0x18e3): undefined reference to
`myStrNCmp(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
../../lib/libcmd.a(cmdParser.o): In function
`CmdExec::lexSingleOption(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >&, bool) const':
cmdParser.cpp:(.text+0x31a): undefined reference to
`myStrGetTok(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >&, unsigned int, char)'
../../lib/libcmd.a(cmdParser.o): In function
`CmdExec::lexOptions(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >&, unsigned int) const':
cmdParser.cpp:(.text+0x13d9): undefined reference to
`myStrGetTok(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> >&, unsigned int, char)'
../../lib/libcmd.a(cmdCharDef.o): In function
`CmdParser::getChar(std::basic_istream<char, std::char_traits<char> >&)
const':
cmdCharDef.cpp:(.text+0xe): undefined reference to
`myGetChar(std::basic_istream<char, std::char_traits<char> >&)'
cmdCharDef.cpp:(.text+0x7e): undefined reference to
`myGetChar(std::basic_istream<char, std::char_traits<char> >&)'
cmdCharDef.cpp:(.text+0x8e): undefined reference to
`myGetChar(std::basic_istream<char, std::char_traits<char> >&)'
cmdCharDef.cpp:(.text+0xbf): undefined reference to
`myGetChar(std::basic_istream<char, std::char_traits<char> >&)'
collect2: ld 回传 1
make[1]: *** [../../bin/adtTest.dlist] Error 1
make: *** [main] Error 2
看起来像是有些library没有被include进来...
想了很久不知道怎麽fix这些error...
不知道有没有人有这个问题??
麻烦版上各位帮忙解惑XD 谢谢^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.248.220
1F:推 ric2k1:试着 rm -f src/*/.depend.mak 看看? 12/03 23:53
2F:→ lleyfede:还是相同的error message... 12/04 19:36
3F:→ lleyfede:连原本的-g都出问题了... 12/04 20:38
4F:推 ric2k1:tar 起来寄给我看一下... 12/04 21:50
5F:→ lleyfede:教授我寄到你的信箱了~ 12/04 22:05
6F:→ lleyfede:我刚刚重新去课程网下载hw5.tgz就可以使用-O3了 12/04 22:06
7F:推 ric2k1:因为你的 src/util 底下有个档案叫 "dlist _ver1.h"...orz 12/04 22:43
8F:→ ric2k1: ^ 有空格... 12/04 22:43
9F:推 ric2k1:把 "$CHDRS" 搞烂了... 12/04 22:45
10F:→ lleyfede:Orz...原来如此,谢谢教授^^ 12/04 22:50