所以我正在为斯坦福大学的CS107课程做一项作业,我无法不编译未完成的程序(项目文件和原始的makefile可以是在课程页面上找到,我正在编写作业4 RSS)。
经过大量的研究,我认为问题在于我在64位架构(MacOS10.6)上使用gcc,而assn-4-rss-news-search-lib/linux下的预编译库代码是32位架构的。我试着让gcc使用i386和-m36,但是什么都没用,我只是在猜测。
这是我运行make时得到的输出
gcc -g -Wall -std=gnu99 -Wno-unused-function -c -o rss-news-search.o rss-news-search.c
gcc rss-news-search.o -g -Wall -std=gnu99 -Wno-unused-function -g -lnsl -lrssnews -L/Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux -o rss-news-search
ld: library not found for -lnsl
collect2: ld returned 1 exit status
make: *** [rss-news-search] Error 1这里是我删除-lnsl时得到的输出,其中提到了体系结构的差异:
gcc -g -Wall -std=gnu99 -Wno-unused-function -c -o rss-news-search.o rss-news-search.c
gcc rss-news-search.o -g -Wall -std=gnu99 -Wno-unused-function -g -lrssnews -L/Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux -o rss-news-search
ld: warning: in /Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux/librssnews.a, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols:
"_URLConnectionDispose", referenced from:
_ProcessFeed in rss-news-search.o
_ParseArticle in rss-news-search.o
... several more undefined symbols mentioned ...
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [rss-news-search] Error 1所以我想知道我能做些什么来解决这个问题。我已经做了几个小时,调整设置和谷歌周围,但没有任何效果。
发布于 2011-03-02 05:56:59
发布于 2012-12-08 10:15:08
为了防止像我这样的人在这么长时间后都在寻找答案.通过安装32位Ubuntu的wubi版本,可以很容易地解决问题。它在64位系统上工作得很好。您只需要编辑makefile,以便它知道在哪里查找所提供的库。
https://stackoverflow.com/questions/5163435
复制相似问题