1

我正在尝试在运行 Solaris 10 的 SPARC 上构建 Apache Qpid。现在 libqpidtypes.so 构建,但 libqpidcommon.so 没有链接。

编译后,链接器会创建很多这样的错误消息:

ld:致命:重定位错误:R_SPARC_TLS_LDO_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/Posix o:未绑定到正在创建的对象时重定位非法

我已经像这样构建了所需的 boost 库 program_options:

 ./b2 install address-model=64 cxxflags="-fPIC" --with-program_options

谷歌产生两个无用的搜索结果“未绑定到正在创建的对象时重新定位非法”

问题:你能告诉我错误信息告诉我什么吗?


编辑:

如果我注释掉线程本地存储说明符,Qpid 会成功编译和链接。当然,这不是运行时的正确行为。

static ThreadStatus*& getThreadStatus() {

        //    THIS IS COMMENTED OUT
        static /*__thread*/ ThreadStatus* threadStatus = 0;

        // Thread local vars can't be dynamically constructed so we need
        // to check whether we've made it yet and construct it if not
        // (no locking necessary for the check as it's thread local!)
        if (!threadStatus) {
            threadStatus = new ThreadStatus;
            allThreadsStatuses.addThreadStatus(threadStatus);
        }

        return threadStatus;
    }

这是完整的错误消息:

ld:警告:文件 /usr/local/lib/libboost_program_options.so:尝试多次包含文件 ld:致命:重定位错误:R_SPARC_TLS_LDM_HI22:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法 ld:致命:重定位错误:R_SPARC_TLS_LDM_HI22:文件 CMakeFiles/qpidcommon.dir/q sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDO_HIX22:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o 时重新定位非法:到正在创建的对象 ld:致命:重定位错误:R_SPARC_TLS_LDM_LO10:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法 ld:致命:重定位错误:R_SPARC_TLS_LDM_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDM_CALL:文件CMakeFiles/qpidcommon.dir/q /sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDO_LOX10:文件CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon。dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法 ld:致命:重定位错误:R_SPARC_TLS_LDO_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o :符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDM_LO10:文件CMakeFiles/qpidcommon。 qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDM_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到对象时重定位非法正在创建 ld:致命:重定位错误:R_SPARC_TLS_LDM_CALL:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/Pos cpp.o:未绑定到正在创建的对象时重定位非法 ld:致命:重定位错误:R_SPARC_TLS_LDO_LOX10:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDO_ADD:文件CMakeFiles/qpidcommon.dir/q /sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDM_LO10:文件CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon。dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法 ld:致命:重定位错误:R_SPARC_TLS_LDM_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o :符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDM_CALL:文件CMakeFiles/qpidcommon.dir/ qpid/sys/posix/PosixPoller.cpp.o:符号_ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到正在创建的对象时重定位非法ld:致命:重定位错误:R_SPARC_TLS_LDO_LOX10:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:未绑定到对象时重定位非法正在创建 ld:致命:重定位错误:R_SPARC_TLS_LDO_ADD:文件 CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o:符号 _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus:绑定到:CMakeFiles/qpidcommon.dir/qpid/sys/posix/Pos cpp.o:未绑定到正在创建的对象时重定位非法 * * * 错误代码 1 以下命令导致错误:cd /export/home/user/qpid-cpp-0.34/build/src && /opt/csw/bin /cmake -E cmake_link_script CMakeFiles/qpidcommon.dir/link。txt --verbose= make:致命错误:目标命令失败src/libqpidcommon.so.2.0.0' Current working directory /export/home/user/qpid-cpp-0.34/build * * * Error code 1 The following command caused the error: make -f src/CMakeFiles/qpidcommon.dir/build.make src/CMakeFiles/qpidcommon.dir/build make: Fatal error: Command failed for targetsrc/CMakeFiles/qpidcommon.dir/all' 当前工作目录 /export/home/user/qpid-cpp-0.34/build * * * 错误代码1 以下命令导致错误: make -f CMakeFiles/Makefile2 all make: Fatal错误:目标“全部”的命令失败


编辑:这是链接器命令

/usr/ccs/bin/ld -V -G -dy -z text -M /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/../../../libgcc -unwind.map -YP,/lib/sparcv9:/usr/lib/sparcv9 -Qy -o libqpidcommon.so.2.0.0 /usr/lib/sparcv9/crti.o /usr/ccs/lib/sparcv9/values- Xa.o /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/sparcv9/crtbegin.o -L/usr/local/lib -L/usr/lib/mps -L/opt/ csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/sparcv9 -L/usr/ccs/lib/sparcv9 -L/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9。 2/../../../sparcv9 -L/lib/sparcv9 -L/usr/lib/sparcv9 -L/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2 -L /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/../../../../sparc-sun-solaris2.10/lib -L/usr/ccs/lib -L/opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/../../.. -hlibqpidcommon.so.2 CMakeFiles/qpidcommon.dir/qpid/framing/AMQP_AllProxy.cpp .o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeDeclareBody。cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageCancelBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TxRollbackBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FilePublishBody.cpp.o CMakeFiles/ qpidcommon.dir/qpid/framing/FileAckBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionCompletedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionDetachedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid /framing/FileRejectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionExpectedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageAcceptBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxStartBody。 cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamCancelBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamPublishBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionStartOkBody.cpp。o CMakeFiles/qpidcommon.dir/qpid/framing/ServerInvoker.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileOpenOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileConsumeBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/ExchangeBoundResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxRollbackBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueQueryBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /MessageAcquireBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamConsumeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionAttachedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TxCommitBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/MessageFlushBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQP_ClientProxy.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageSetFlowModeBody.cpp.o CMakeFiles/qpidcommon。dir/qpid/framing/MethodBodyFactory.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FragmentProperties.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileDeliverBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /ConnectionCloseBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueQueryResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionConfirmedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExecutionExceptionBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionRedirectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionKnownCompletedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageReleaseBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/MessageRejectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/Xid.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionAttachBody.cpp.o CMakeFiles/qpidcommon。dir/qpid/framing/XaResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxSetTimeoutBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeBindBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /ExecutionResultBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileConsumeOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileQosBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionRequestTimeoutBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/FileProperties.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionFlushBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageTransferBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/ReplyTo.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamReturnBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageAcquireResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /DtxSelectBody。cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamProperties.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQP_ServerProxy.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionTuneOkBody.cpp.o CMakeFiles/ qpidcommon.dir/qpid/framing/ExchangeUnbindBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/reply_exceptions.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DeliveryProperties.cpp.o CMakeFiles/qpidcommon.dir/qpid /framing/FileReturnBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxGetTimeoutBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueDeclareBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TypeCode。 cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxCommitBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxGetTimeoutResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionOpenOkBody.cpp。o CMakeFiles/qpidcommon.dir/qpid/framing/MethodBodyDefaultVisitor.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileQosOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeQueryBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/StreamQosBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionOpenBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileStageBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /Header.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeBoundBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageResumeResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionCommandPointBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/MessageResumeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxRecoverResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamDeliverBody.cpp。o CMakeFiles/qpidcommon.dir/qpid/framing/AllInvoker.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxRecoverBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ClientInvoker.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/SessionGapBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionTimeoutBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeDeleteBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /ConnectionSecureOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionDetachBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionStartBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileCancelBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/MessageFlowBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueDeleteBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionSecureBody.cpp.o CMakeFiles/qpidcommon。dir/qpid/framing/DtxForgetBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionCloseOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TxSelectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /DtxPrepareBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionHeartbeatBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxEndBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExecutionSyncBody.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeQueryResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueuePurgeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamQosOkBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/MessageStopBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamConsumeOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileOpenBody.cpp.o CMakeFiles/qpidcommon。dir/qpid/framing/MessageSubscribeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionTuneBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageProperties.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys /posix/AsynchIO.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/Fork.cpp.o CMakeFiles/qpidcommon.dir/qpid/ sys/posix/Path.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/FileSysDir.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/IOHandle.cpp.o CMakeFiles/qpidcommon.dir/qpid /sys/posix/LockFile.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/MemoryMappedFile.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/Mutex.cpp.o CMakeFiles/qpidcommon.dir/ qpid/sys/posix/PipeHandle.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/PollableCondition.cpp.o CMakeFiles/qpidcommon。dir/qpid/sys/posix/Shlib.cpp.o CMakeFiles/qpidcommon.dir/qpid/log/posix/SinkOptions.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/BSDSocket.cpp.o CMakeFiles/qpidcommon .dir/qpid/sys/posix/SocketAddress.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/StrError.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/posix/Thread.cpp.o CMakeFiles/ qpidcommon.dir/qpid/sys/posix/Time.cpp.o CMakeFiles/qpidcommon.dir/qpid/SaslFactory.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/solaris/SystemInfo.cpp.o CMakeFiles/qpidcommon.dir /qpid/sys/posix/PosixPoller.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/cyrus/CyrusSecurityLayer.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/ssl/check.cpp.o CMakeFiles/qpidcommon。 dir/qpid/sys/ssl/util.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/ssl/SslSocket.cpp.o CMakeFiles/qpidcommon.dir/qpid/assert.cpp.o CMakeFiles/qpidcommon。dir/qpid/AclHost.cpp.o CMakeFiles/qpidcommon.dir/qpid/Address.cpp.o CMakeFiles/qpidcommon.dir/qpid/DataDir.cpp.o CMakeFiles/qpidcommon.dir/qpid/Exception.cpp.o CMakeFiles/ qpidcommon.dir/qpid/Modules.cpp.o CMakeFiles/qpidcommon.dir/qpid/Options.cpp.o CMakeFiles/qpidcommon.dir/qpid/Plugin.cpp.o CMakeFiles/qpidcommon.dir/qpid/RefCountedBuffer.cpp.o CMakeFiles/qpidcommon.dir/qpid/SessionState.cpp.o CMakeFiles/qpidcommon.dir/qpid/SessionId.cpp.o CMakeFiles/qpidcommon.dir/qpid/StringUtils.cpp.o CMakeFiles/qpidcommon.dir/qpid/Url.cpp .o CMakeFiles/qpidcommon.dir/qpid/UrlArray.cpp.o CMakeFiles/qpidcommon.dir/qpid/NullSaslClient.cpp.o CMakeFiles/qpidcommon.dir/qpid/NullSaslServer.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp_0_10 /SessionHandler.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AccumulatedAck.cpp。o CMakeFiles/qpidcommon.dir/qpid/framing/AMQBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQMethodBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQContentBody.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/AMQFrame.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQHeaderBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQHeartbeatBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /Array.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/Buffer.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FieldTable.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FieldValue.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/FrameSet.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FrameDecoder.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/List.cpp.o CMakeFiles/qpidcommon。 dir/qpid/framing/ProtocolInitiation.cpp.o CMakeFiles/qpidcommon。dir/qpid/framing/ProtocolVersion.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SendContent.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SequenceNumber.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing /SequenceNumberSet.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SequenceSet.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/Proxy.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/Uuid.cpp。 o CMakeFiles/qpidcommon.dir/qpid/framing/TransferContent.cpp.o CMakeFiles/qpidcommon.dir/qpid/log/Logger.cpp.o CMakeFiles/qpidcommon.dir/qpid/log/Options.cpp.o CMakeFiles/qpidcommon。 dir/qpid/log/OstreamOutput.cpp.o CMakeFiles/qpidcommon.dir/qpid/log/Selector.cpp.o CMakeFiles/qpidcommon.dir/qpid/log/Statement.cpp.o CMakeFiles/qpidcommon.dir/qpid/management /Buffer.cpp.o CMakeFiles/qpidcommon.dir/qpid/management/ConnectionSettings.cpp。o CMakeFiles/qpidcommon.dir/qpid/management/Mutex.cpp.o CMakeFiles/qpidcommon.dir/qpid/management/Manageable.cpp.o CMakeFiles/qpidcommon.dir/qpid/management/ManagementObject.cpp.o CMakeFiles/qpidcommon。 dir/qpid/sys/AggregateOutput.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/AsynchIOHandler.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/Dispatcher.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys /DispatchHandle.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/Runnable.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/Shlib.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/Timer.cpp。 o CMakeFiles/qpidcommon.dir/qpid/sys/TimerWarnings.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp_0_10/Codecs.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/CharSequence.cpp.o CMakeFiles/qpidcommon。 dir/qpid/amqp/DataBuilder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/Decoder.cpp。o CMakeFiles/qpidcommon.dir/qpid/amqp/Descriptor.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/Encoder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/ListBuilder.cpp.o CMakeFiles/qpidcommon。 dir/qpid/amqp/MapEncoder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MapSizeCalculator.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MapBuilder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp /MapReader.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MessageEncoder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MessageId.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MessageReader.cpp。 o CMakeFiles/qpidcommon.dir/qpid/amqp/Sasl.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/SaslClient.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/SaslServer.cpp.o CMakeFiles/qpidcommon。 dir/qpid/messaging/amqp/Transport.cpp.o CMakeFiles/qpidcommon.dir/qpid/sys/MemStat.cpp.o libqpidtypes.so.1.0。0 -ldl -lrt /usr/local/lib/libboost_program_options.so -lsasl2 -lnss3 -lsmime3 -lssl3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -lposix4 -lrt /usr/local/lib/libboost_program_options.so - lsasl2 -lnss3 -lsmime3 -lssl3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -lposix4 -R/usr/local/lib:/usr/lib/mps:/export/home/user/qpid-cpp-0.34/build/ src:-lgcc_s -lpthread -lc -R /opt/csw/lib/64 -lgcc_s -lpthread -lc -R /opt/csw/lib/64 /opt/csw/lib/gcc/sparc-sun-solaris2.10 /4.9.2/sparcv9/crtend.o /usr/lib/sparcv9/crtn.o34/build/src: -lgcc_s -lpthread -lc -R /opt/csw/lib/64 -lgcc_s -lpthread -lc -R /opt/csw/lib/64 /opt/csw/lib/gcc/sparc-sun -solaris2.10/4.9.2/sparcv9/crtend.o /usr/lib/sparcv9/crtn.o34/build/src: -lgcc_s -lpthread -lc -R /opt/csw/lib/64 -lgcc_s -lpthread -lc -R /opt/csw/lib/64 /opt/csw/lib/gcc/sparc-sun -solaris2.10/4.9.2/sparcv9/crtend.o /usr/lib/sparcv9/crtn.o

4

2 回答 2

2

SPARC 64 位二进制文​​件可能需要比-fpic选项提供的更大的重定位表。使用-fPIC(大写)。 请参阅 Oracles 链接器和库指南

SPARC:-Kpic 和 -KPIC 选项

对于 SPARC 二进制文件,-K pic 选项和替代 -K PIC 选项之间的细微差别会影响对全局偏移表条目的引用。...

尝试使用 Solaris Studio 编译器进行编译,您可能会收到更具描述性的错误消息,例如链接的 Oracle 文档中列出的错误消息。

于 2015-07-21T21:54:12.733 回答
2

没有足够的信息来完全解释或解决您的问题,但我可以提供一些“提示”。重定位 R_SPARC_TLS_LDO_ADD 用于实现线程本地存储。具体来说,它与本地动态 TLS 模型一起使用,这是用于实现 TLS 的四种模型之一。

当本地动态模型用于引用 TLS 变量时,该变量需要在引用它的同一动态对象(共享库)中定义。您收到的错误表明threadStatus函数qpid::sys::DeletionManager<qpid::sys::PollerHandlePrivate>::getThreadStatus中定义的 thead 局部静态变量未在正在创建的共享库 (libqpidcommon.so.2.0.0) 中的任何位置定义。相反,它是在与之链接的其他一些共享库中定义的(可能是 libqpidtypes.so.1.0.0)。

为什么会产生此错误尚不清楚。默认情况下,GCC在编译时使用全局动态模型-fpic。当使用全局动态模型引用线程局部变量时,它们可以在任何共享库中,而不仅仅是正在创建的共享库。您可以尝试显式使用该-ftls-model=global-dynamic选项,但除非显式使用某些内容,否则-ftls-model=local-dynamic这不会产生任何影响。

GCC 可能错误地优化了对threadStatus. 如果 GCC 确定不能从不同的翻译单元访问线程局部变量,它将使用局部动态模型来引用它,因为该模型比更通用的全局动态模型更快。问题也可能是由于您正在编译的源代码中的某些内容、makefile 中的错误或链接器中的错误。

于 2015-07-23T23:47:49.340 回答