首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接共享库中的log4cplus.a?

如何链接共享库中的log4cplus.a?
EN

Stack Overflow用户
提问于 2014-09-30 23:26:06
回答 1查看 923关注 0票数 1

我尝试通过链接"liblog4cplus.a“来创建一个名为"logtest.so”的共享库,这个共享库是我用-fPIC选项编译的。

这里是"logtest.cpp“(仅用于测试目的,从log4cplus网站复制):

代码语言:javascript
复制
#include "log4cplus/logger.h"
#include "log4cplus/loggingmacros.h"
#include "log4cplus/configurator.h"


using namespace log4cplus;

void test()
{
    initialize();
    BasicConfigurator config;
    config.configure();
}

下面是命令:

代码语言:javascript
复制
g++ -shared logtest.cpp -L . -llog4cplus -pthread -o liblogtest.so -lrt -fPIC

下面是错误消息:

代码语言:javascript
复制
/usr/bin/ld: ./liblog4cplus.a(configurator.o): relocation R_X86_64_32S against `_ZTVN9log4cplus23ConfigureAndWatchThreadE' can not be used when making a shared object; recompile with -fPIC
./liblog4cplus.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

通过调用:

代码语言:javascript
复制
nm liblog4cplus.a | grep _ZTVN9log4cplus23ConfigureAndWatchThreadE

我得到了:

代码语言:javascript
复制
0000000000000000 V _ZTVN9log4cplus23ConfigureAndWatchThreadE

我尝试添加"-Wl,-rpath,$ORIGIN",但仍然收到相同的错误消息。

我猜这与在共享库中链接静态库有关,但我尝试了所有的建议,但它仍然不起作用。

EN

回答 1

Stack Overflow用户

发布于 2014-10-01 13:24:49

在配置log4cplus时,使用--with-pic选项获取一个包含PIC代码的静态库,该库可以链接到SO中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26124543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档