在Linux中使用共享库时未定义的函数引用

时间:2016-04-04 13:52:01

标签: c++ linux makefile shared-libraries undefined-reference

我在使用自定义共享库时遇到一些问题,因为我从其他两个源文件中获取了某些函数的未定义引用错误。

如果我使用主文件(发布:)编译整个项目,一切正常。但是如果我创建一个共享库(lib :)并将该库与主文件(全部:)一起使用,则会发生这些编译时错误。

这是我的makefile的片段

release:
   $(CC) -Wall -s -w $(INCLUDES) $(LIBRARY) $(SRC) mainfile.cpp $(OCV) $(BOOST) $(GLOG) $(GFLAGS) -o test.exe
lib:
   $(CC) -fPIC $(INCLUDES) $(LIBRARY) -c $(SRC) $(OCV) $(BOOST) $(GLOG) $(GFLAGS) 
   mv *.o obj/
   $(CC) -shared -o libOutput.so obj/*.o
all:
   $(CC) -Wall -s -w $(INCLUDES) $(LIBRARY) mainfile.cpp -L/path/to/lib/ -lOutput $(OCV) $(BOOST) $(GLOG) $(GFLAGS) -o project.exe

由于在使用release-option编译期间没有错误,我假设存在特定于链接器的问题。

我使用 GNU Binary Utilities

检查了特定的目标文件
nm -C obj/specific.o | grep functionName

没有结果。我为共享库做了同样的事情,但这次有以下结果,

U functionName(std::vector<int>)

表示该功能未知。

您有什么建议,如何解决这个问题?

0 个答案:

没有答案