所以我正在完成斯坦福大学CS107课程的作业,我无法完成编译未完成的程序(项目文件和原始makefile 可以是found on the course page,我'我正在完成作业4 RSS。)
经过大量研究,我认为问题是我在64位架构上使用gcc(Mac OS 10.6),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
所以我要求我就如何解决这个问题提出任何想法。我已经花了几个小时来调整设置和谷歌无所作为。
答案 0 :(得分:2)
如果像我这样的人在这段时间过后都会寻找答案...... 通过安装32位Ubuntu的wubi版本可以轻松解决问题。它在64位系统上运行良好。您只需要编辑makefile,它就知道在哪里查找提供的库。
答案 1 :(得分:0)
我很确定在macos上使用linux上的预编译库,无论有多大,都行不通(好吧,可能可以在MacOS for Linux上进行交叉编译,也许可以运行Linux可执行文件在MacOS上的兼容性框中,但这与您尝试的操作完全不同。)
libnsl是Linux上的标准库(它提供了一些与网络相关的功能)