无法链接杜马库

Unable to link duma library

本文关键字:杜马库 链接      更新时间:2023-10-16

我正在尝试使用DUMA(http://duma.sourceforge.net/),但似乎无法将其正确链接到我的代码中。 这是我的制作文件:

CXX := /home/projects/gcc/482/bin/c++
CXXFLAGS := -std=c++11 -pedantic -Wall -I/home/duma_2_5_15/
LDFLAGS := -L/home/duma_2_5_15/ -lduma
#CXX_DEPEND := -MMD -MF .d.$(subst .cc,,$*) -MP -MT $@
CXX_DEPEND :=
define compile-c++-and-emit-deps
$(CXX) $(CXXFLAGS) $(CXX_DEPEND) -c $< -o $@
endef
%.o : %.cc
    $(compile-c++-and-emit-deps)
srcs := $(wildcard *.cc)
objs := $(srcs:.cc=.o)
deps := $srcs:%.cc=.d.%)
default: test
test: $(objs)
    $(CXX) $(LDFLAGS) -o $@ $(objs)
#-include $(deps)

当我运行"make"时,我收到以下错误:

> make
/home/projects/gcc/482/bin/c++ -L/home/duma_2_5_15/ -lduma -o test main.o
main.o: In function `main':
main.cc:(.text+0x193c): undefined reference to `_duma_malloc'
main.cc:(.text+0x19f8): undefined reference to `_duma_free'
collect2: error: ld returned 1 exit status
make: *** [test] Error 1

我没有正确链接杜马吗? 我的 main.cc 文件确实包含以下标头:

#include "duma.h"

我确实在DUMA主页上阅读了以下说明:

某些系统需要对链接器进行特殊参数,以确保使用的是 DUMA malloc(),而不是 C 库中的那个。

但是,我不确定如何从这里开始。 这在Linux 2.6.18-308.el5上运行。

谢谢

这是我自己问题的解决方案。 请注意底部倒数第二行代码上的"-lduma"添加。 这就是我必须添加的全部内容,以使其正确链接。

CXX := /home/projects/gcc/482/bin/c++
CXXFLAGS := -std=c++11 -pedantic -Wall -I/home/duma_2_5_15/
LDFLAGS := -L/home/duma_2_5_15/ -lduma
#CXX_DEPEND := -MMD -MF .d.$(subst .cc,,$*) -MP -MT $@
CXX_DEPEND :=
define compile-c++-and-emit-deps
$(CXX) $(CXXFLAGS) $(CXX_DEPEND) -c $< -o $@
endef
%.o : %.cc
    $(compile-c++-and-emit-deps)
srcs := $(wildcard *.cc)
objs := $(srcs:.cc=.o)
deps := $srcs:%.cc=.d.%)
default: test
test: $(objs)
    $(CXX) $(LDFLAGS) -o $@ $(objs) -lduma
#-include $(deps)