首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用STXXL生成文件

使用STXXL生成文件
EN

Stack Overflow用户
提问于 2012-03-05 04:45:44
回答 1查看 226关注 0票数 0

我需要为我正在处理的一个软件项目使用STXXL库,但是由于某些原因,我在编译测试文件时遇到了问题。我对makefile不是很熟悉,所以我可能把一些库链接在一起了。

我使用的虚拟文件是Draw.h、Draw.cpp和driver.cpp。可以想象,Draw.h声明了一个用Draw.cpp实现的方法draw(),driver.cpp包含main函数,并且包含Draw.h并调用draw()。

我使用的makefile是:

代码语言:javascript
复制
STXXL_ROOT      ?= /Users/name/stxxl-1.3.1
STXXL_CONFIG    ?= stxxl.mk
include $(STXXL_ROOT)/$(STXXL_CONFIG)

# use the variables from stxxl.mk
CXX              = $(STXXL_CXX)
CPPFLAGS        += $(STXXL_CPPFLAGS)
LDLIBS          += $(STXXL_LDLIBS)

# add your own optimization, warning, debug, ... flags
# (these are *not* set in stxxl.mk)
CPPFLAGS        += -O3 -Wall -g -DFOO=BAR

# build your application
# (my_example.o is generated from my_example.cpp automatically)
my_example.bin: driver.o Draw.o
    $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) driver.o -o $@ $(LDLIBS)

driver.o: driver.cpp Draw.h
    $(CXX) $(CXXFLAGS) -c driver.cpp

Draw.o: Draw.cpp Draw.h
    $(CXX) $(CXXFLAGS) -c Draw.cpp

我得到的错误是

代码语言:javascript
复制
g++  -I/Users/name/stxxl-1.3.1/include -include stxxl/bits/defines.h -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -O3 -Wall -g -DFOO=BAR  driver.o -o my_example.bin -L/Users/name/stxxl-1.3.1/lib -lstxxl
Undefined symbols for architecture x86_64:
  "draw(int)", referenced from:
      _main in driver.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [my_example.bin] Error 1

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-05 08:50:58

在此规则中:

代码语言:javascript
复制
my_example.bin: driver.o Draw.o
    $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) driver.o -o $@ $(LDLIBS)

您需要Draw.o存在,但您没有将其链接进来。试试这个:

代码语言:javascript
复制
my_example.bin: driver.o Draw.o
    $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) driver.o Draw.o -o $@ $(LDLIBS)

或者更简洁地说:

代码语言:javascript
复制
my_example.bin: driver.o Draw.o
    $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ $(LDLIBS)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9558648

复制
相关文章

相似问题

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