首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS107分配文件无法编译,缺少expat.h和thread_107.h文件

问CS107分配文件无法编译,缺少expat.h和thread_107.h文件
EN

Stack Overflow用户
提问于 2012-08-13 03:47:26
回答 2查看 1.8K关注 0票数 0

我在斯坦福网上审计cs107

我遇到的问题是赋值6,当我在终端中输入"make“时,弹出错误消息。基本上,我错过了两个头文件,我猜这两个头文件可以从预编译的.lib文件中获得。但不知何故,它就是不起作用。

以下是原始make文件的一部分:

代码语言:javascript
复制
CFLAGS = -D_REENTRANT -g -Wall -D__ostype_is_$(OSTYPE)__ -std=gnu99 -I/usr/class/cs107/include/ -Wno-unused-function $(DFLAG)
LDFLAGS = -L/usr/class/cs107/assignments/assn-6-rss-news-search-lib/$(OSTYPE) -L/usr/class/cs107/lib -lexpat -lrssnews $(PLATFORM_LIBS) $(THREAD_LIBS)
PFLAGS= -linker=/usr/pubsw/bin/ld -best-effort -threads=yes -max-threads=1000

编辑:

当我说“这应该在没有线程实现的情况下编译”时,我的意思是它应该在没有进一步的线程实现的情况下由学生编译。

下面是线程的错误消息:

代码语言:javascript
复制
gcc -D_REENTRANT -g -Wall -D__ostype_is_linux__ -std=gnu99 -I/usr/class/cs107/include/ -Wno-unused-function -c -o rss-news-search.o rss-news-search.c
rss-news-search.c: In function ‘main’:
rss-news-search.c:109:3: warning: implicit declaration of function ‘InitThreadPackage’ [-Wimplicit-function-declaration]
gcc rss-news-search.o -D_REENTRANT -g -Wall -D__ostype_is_linux__ -std=gnu99 -I/usr/class/cs107/include/ -Wno-unused-function -L/home/h/cs107/assn-6-rss-news-search-lib/linux -L/usr/class/cs107/lib -L. -lexpat -lrssnews -lnsl -lpthread -lthread_107_linux -o rss-news-search
/usr/bin/ld: cannot find -lthread_107_linux
collect2: ld returned 1 exit status
make: *** [rss-news-search] Error 1

以下是不带$(THREAD_LIBS)的错误消息:

代码语言:javascript
复制
gcc -D_REENTRANT -g -Wall -D__ostype_is_linux__ -std=gnu99 -I/usr/class/cs107/include/ -Wno-unused-function -c -o rss-news-search.o rss-news-search.c
rss-news-search.c: In function ‘main’:
rss-news-search.c:109:3: warning: implicit declaration of function ‘InitThreadPackage’ [-Wimplicit-function-declaration]
gcc rss-news-search.o -D_REENTRANT -g -Wall -D__ostype_is_linux__ -std=gnu99 -I/usr/class/cs107/include/ -Wno-unused-function -L/home/h/cs107/assn-6-rss-news-search-lib/linux -L/usr/class/cs107/lib -L. -lexpat -lrssnews -lnsl -lpthread  -o rss-news-search
rss-news-search.o: In function `main':
/home/h/cs107/assn-6-rss-news-search/rss-news-search.c:109: undefined reference to `InitThreadPackage'
collect2: ld returned 1 exit status
make: *** [rss-news-search] Error 1

在后一种情况下,如果我注释掉"InitThreadPackage",它会编译得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 04:55:14

以下是编译项目的过程:

  1. 创建一个文件assn-6-rss-news-search/thread_107.h,并将其放入:

将库函数从assn-6-rss-news-search-lib/linux/注释为文件rss-news-search.c,方法是在109上使用注释对函数的调用:InitThreadPackage:

//InitThreadPackage(false);

  • Modify Makefile以包含指向当前目录的路径(以便能够链接到之前复制的库

行27应如下所示:

代码语言:javascript
复制
LDFLAGS = -L/usr/class/cs107/assignments/assn-6-rss-news-search-lib/$(OSTYPE) -L/usr/class/cs107/lib -L. -lexpat -lrssnews $(PLATFORM_LIBS) $(THREAD_LIBS)

然后:

代码语言:javascript
复制
make clean
make

编辑:

收到此错误cannot find lthread_107_linux时,请编辑Makefile以在27行上删除此$(THREAD_LIBS)

代码语言:javascript
复制
LDFLAGS = -L/usr/class/cs107/assignments/assn-6-rss-news-search-lib/$(OSTYPE) -L/usr/class/cs107/lib -L. -lexpat -lrssnews $(PLATFORM_LIBS)
票数 1
EN

Stack Overflow用户

发布于 2012-08-13 04:10:40

特定于班级的头文件,如thread_107.h,可以在讲师期望学生使用的任何机器上的/usr/class/cs107/include/中找到。如果您不使用该计算机,则必须复制这些包含文件或创建自己的文件。

expat.h文件来自一个开源库。您需要在您正在编译的系统上安装适当的包。在Ubuntu上,这是sudo apt-get install libexpat1-dev,但在其他发行版上,包名应该类似。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11925352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档