如何解决Hazelcast C++;ubuntu中的客户端编译失败? 我试图运行一个基本的HAZECAST C++客户端。我有以下错误,有人能帮忙吗

如何解决Hazelcast C++;ubuntu中的客户端编译失败? 我试图运行一个基本的HAZECAST C++客户端。我有以下错误,有人能帮忙吗,c++,g++,hazelcast,C++,G++,Hazelcast,编译命令: g++ FillMap.cpp -w -pthread -Icpp/Linux_64/external/include -Icpp/Linux_64/hazelcast/include -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS /home/myubuntu/hazelcast-cpp-client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a 错误: /usr/bin

编译命令:

g++ FillMap.cpp -w -pthread -Icpp/Linux_64/external/include -Icpp/Linux_64/hazelcast/include -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS /home/myubuntu/hazelcast-cpp-client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a
错误:

/usr/bin/ld: /home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(NearCacheStatsImpl.cpp.o): 根据符号重新定位R_X86_64_32S
\u ZTVN9hazelcast6client7monitor4impl18NearCacheStatsImplE'不能被删除
制作饼图对象时使用;使用-fPIC/usr/bin/ld重新编译:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(LocalMapStatsImpl.cpp.o):
根据符号重新定位R_X86_64_32S
\u ZTVN9hazelcast6client7monitor4impl17LocalMapStatsImplE'不能为空 制作饼图对象时使用;使用-fPIC/usr/bin/ld重新编译: /home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(HazelcastClient.cpp.o): 根据符号重新定位R_X86_64_32S
\u ztvn5boots6detail17sp\u impl\u pIN9hazelcast6client4impl27HazelcastClientInstanceImplEEE'
制作饼图对象时不能使用;用-fPIC重新编译
/usr/bin/ld:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(KeyStateMarkerImpl.cpp.o):
根据符号重新定位R_X86_64_32S
\u ZTVN9hazelcast6client8internal9nearcache4impl18KeyStateMarkerImplE' 制作饼图对象时不能使用;用-fPIC重新编译 /usr/bin/ld: /home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(NearCacheDataRecord.cpp.o): 根据符号重新定位R_X86_64_32S
\u ztvn9hazelcast6client8internal9nearcache4imple6record23abstractnearcacherecordins0\u 13序列化5mple4dataee'
制作饼图对象时不能使用;用-fPIC重新编译
/usr/bin/ld:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(ClientInvocationFuture.cpp.o):
根据符号重新定位R_X86_64_32S
\u ZTVN9HazelCast6Client3SPI4Imple22ClientInvocationFuture35内部委托执行回调' 制作饼图对象时不能使用;用-fPIC重新编译 /usr/bin/ld: /home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(ClientInvocation.cpp.o):根据
.rodata.str1.1重新定位R_X86_64_32
制作馅饼对象;使用-fPIC/usr/bin/ld重新编译:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(LifecycleService.cpp.o):在进行
饼状物体;使用-fPIC/usr/bin/ld重新编译:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(ClientProxy.cpp.o):
根据符号重新定位R_X86_64_32S
\u ZTVN9hazelcast6client3spi11ClientProxy21EventHandlerDelegatorE'可以
制作饼图对象时不可使用;用-fPIC重新编译
/usr/bin/ld:
/home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(ProxyManager.cpp.o):
在以下情况下,无法根据
.rodata.str1.8'重新定位R_X86_64_32 制作馅饼对象;使用-fPIC/usr/bin/ld重新编译: /home/radkathimar/hazelcast cpp client/cpp/Linux_64/hazelcast/lib/libHazelcastClient3.12_64.a(ClientContext.cpp.o): 在进行重新定位时,不能使用针对“.bss”的重新定位R_X86_64_32” 饼图对象;用-fPIC重新编译


你试过用-fPIC重新编译吗?我试过了,但结果相同。我假设它是在抱怨静态库要求用-FPIC重新编译库吗?是的,你必须重新编译。一个文件--FPICTIX。一个文件作为HAZECAST C++客户端包的一部分来了。你知道如何重新编译吗?也许我需要获得源代码并从头开始编译?你也可以用另一种方法,将客户端代码重新编译为非PIC/PIE(
-no-PIE
选项用于gcc链接可能就足够了,因为你一步就完成了编译+链接(我认为也有
-fno pic
仅用于编译,但我不确定我是否记得正确,请使用gcc手册获取精确选项)…这通常是次优解决方案,但如果无法重新编译库的源代码,可以将其用作解决方案。(如果您没有该库的源代码,并且项目不是开源的,可能会很快逃离它,除非这是一天的实验+之后删除)