gpt4 book ai didi

c++ - 如何在共享库中链接 log4cplus.a?

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:29 25 4
gpt4 key购买 nike

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

这里是“logtest.cpp”(从log4cplus网站复制过来,只是为了测试目的):

#include "log4cplus/logger.h"
#include "log4cplus/loggingmacros.h"
#include "log4cplus/configurator.h"


using namespace log4cplus;

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

命令如下:

g++ -shared logtest.cpp -L . -llog4cplus -pthread -o liblogtest.so -lrt -fPIC

这是错误信息:

/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

通过调用:

nm liblog4cplus.a | grep _ZTVN9log4cplus23ConfigureAndWatchThreadE

我得到:

0000000000000000 V _ZTVN9log4cplus23ConfigureAndWatchThreadE

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

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

最佳答案

配置log4cplus时,使用--with-pic选项得到一个带有PIC代码的静态库,可以链接到SO中。

关于c++ - 如何在共享库中链接 log4cplus.a?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com