c++ - linux动态库链接时出现undefined reference to的错误
本文介绍了c++ - linux动态库链接时出现undefined reference to的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
最近我在linux上使用 log4cplus 出现了如下的问题:
代码
using namespace log4cplus;
using namespace log4cplus::helpers;
SharedAppenderPtr _append;
SharedAppenderPtr append(new DailyRollingFileAppender("./log/Test.log", HOURLY, true, 1, true, true));
Logger::getRoot().addAppender(append);
Logger _logger = Logger::getRoot();
Logger test = Logger::getInstance("test");
Logger subTest = Logger::getInstance("test.subtest");
for (int i = 0; i < 5; i++)
{
LOG4CPLUS_DEBUG(subTest, "Entering loop #" << i);
}
在编译的时候,一开始直接生成可执行文件是没有问题的:
g++ test.cpp -std=c++11 -I/usr/local/include -L/usr/local/lib -llog4cplus -o test
但是当我分成两步来做的时候就有问题了:
g++ test.cpp -std=c++11 -I/usr/local/include -c -o test.o
g++ -L/usr/local/lib -llog4cplus test.o -o test
生成目标文件成功,但是生成可执行文件的时候,就是错误的。
求大神指教,十分感谢。
解决方案
Link的时候,符号查找是从左到右的,你把test.o放到库的左边应该就可以了。
g++ test.o -L/usr/local/lib -llog4cplus -o test
这篇关于c++ - linux动态库链接时出现undefined reference to的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文