※ 引述《trantor (阿精米德)》之铭言:
: 如题,
: 我试过在cygwin上compile但出现undefined reference error。
: 这是我在stackoverfolw上的问题:
: http://stackoverflow.com/questions/13927458/cygwin-g-build-error-undefined-reference-to/13928777#comment19202946_13928777
同学您好:
This assignment is designed for LINUX-SPECIFIC platform.
The codes you turn in should work on LINUX machine.
一开始我也以为 少了buf.h 和hfpage应该不能make
但是在工作站 make之后可以跑
后来我查了一下资料 看了makefile
http://blog.yam.com/ytha/article/16636287
这边有介绍的满清楚的
另外鸟哥的
http://linux.vbird.org/linux_basic/0520source_code_and_tarball.php#library_dyna_sta
我想是因为有
libbtree.a
-L. 指目前所在目录, 如果libtest.a是放在其他目录下, 请在-L后面加上所在位置,
-lbtree 就是指 libbtree.a
把一些lib 都使用linux 内建的或其他lib
所以让一些没有完整的code能够跑!
如果使用其他系统 libbtree.a应该要重新产生
以下是我mac mini Mac OSX version 10.7.5 直接 make得错误
g++ -g -I../include -I. main.o btree_driver.o btfile.o btindex_page.o
btleaf_page.o btree_file_scan.o key.o db.o new_error.o sorted_page.o
system_defs.o -o btree -L. -lbtree -lm
ld: warning: ignoring file ./libbtree.a, file was built for archive which is
not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"BufMgr::pinPage(int, Page*&, int, char const*)", referenced from:
BTreeFile::printPage(int) in btfile.o
BTreeFile::updateHeader(int) in btfile.o
BTreeFile::_insert(void const*, RID, KeyDataEntry**, int*, int)in
btfile.o
BTreeFile::findRunStart(void const*, BTLeafPage**, RID*)in btfile.o
BTreeFile::printLeafPages() in btfile.o
BTreeFile::naiveDelete(void const*, RID)in btfile.o
BTreeFile::_destroyFile(int) in btfile.o
...
很明显 libbtree.a档造成 无法compile成功
hw3的时候我也在mac 和 unbuntu (某位同学的)电脑上make
当时也是失败
我还是推荐你再系上的工作站跑
如果要其他系统 你试试看把之前的code buf.c 和 hfpage.c 都放进去试试看
不过我不确定会不会成功
ps : ptt上的我顺便把这篇贴上回文
希望能回答到你的问题
-TA 叶俊言