将动态库链接到我的项目

时间:2017-02-23 16:35:53

标签: c++ makefile

看了很多帖后我真的很困惑。 我想将动态库链接到我的cpp代码。

图书馆位于/usr/local/include/sbml 并且可以在/usr/local/lib

中找到libsbml.so文件

我有一个看起来像这样的makefile

SHELL = /bin/sh
VERSION = 5.04.02
CC      = /usr/bin/g++
CFLAGS  = -Wall -g -D_REENTRANT -DVERSION=\"$(VERSION)\"
LDFLAGS = -lsbml

OBJ = main.o SBML.o

prog: $(OBJ)
    $(CC) $(CFLAGS) -o prog $(OBJ) $(LDFLAGS)

%.o: %.c
    $(CC) $(CFLAGS) -c $<

.PHONY : clean
clean :
    -rm edit $(OBJ)

如果我运行makefile,我会收到以下错误:(对SBMLReader :: readSBMLFromFile()的未定义引用)

g++    -c -o SBML.o SBML.cpp
/usr/bin/g++ -Wall -g -D_REENTRANT -DVERSION=\"5.04.02\" -o prog main.o SBML.o -lsbml
sbml.o: In Funktion `SBML::readSBML()':
sbml.cpp:(.text+0x129): Nicht definierter Verweis auf `SBMLReader::readSBMLFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status

1 个答案:

答案 0 :(得分:3)

未链接库,因为您还需要指定包含so-file的文件夹:

Hi James Madison, Welcome to Vienna!
Hi James Monroe, Welcome to Toronto!
Hi John Quincy Adams, Welcome to Paris!
Hi Andrew Jackson, Welcome to New York! 
Hi Martin Van Buren, Welcome to London!
Hi William Henry Harrison, Welcome to Tokyo!
Hi John Tyler, Welcome to Berlin!

现在它应该链接,你的未解决的符号也应该消失。