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

以上是 linux动态库链接时出现undefined reference to的错误 的全部内容, 来源链接: utcz.com/p/191980.html

回到顶部