Что означает "незаконное перемещение, когда оно не связано с создаваемым объектом"?
Я пытаюсь собрать Apache Qpid на SPARC, работающем под управлением Solaris 10. Сейчас libqpidtypes.so собирается, но libqpidcommon.so не связывает.
После компиляции компоновщик создает много сообщений об ошибках, подобных этому:
л.д.: со смертельным исходом: ошибка перемещения: 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: перемещение запрещено, если оно не связано с создаваемым объектом
Я собрал необходимую библиотеку надстройки program_options, например:
./b2 install address-model=64 cxxflags="-fPIC" --with-program_options
Google создает два бесполезных результатов поиска для "незаконного перемещения, когда оно не связано с создаваемым объектом"
Вопрос: можете ли вы дать мне подсказку, что говорит мне сообщение об ошибке?
Редактировать:
Если я закомментирую спецификатор локального хранилища потока, 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: fatal: ошибка перемещения: R_SPARC_TLS_LDM_HI22: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.pp. _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: фал_диск_23 sys / posix /PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/ недопустимая позиция: недопустимая пересылка R_SPARC_TLS_LDO_HIX22: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadthatSEV tatus: привязано к: CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: перемещение недопустимо, когда нет привязки к создаваемому объекту ld: fatal: ошибка перемещения: R_SPARC_TLS_LDM_LO10: файл CMakeFiles / qpidcommon.dir / qpid sys / posix /PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/ недопустимая позиция: недопустимая пересылка R_SPARC_TLS_LDM_ADD: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getthix для создаваемого объекта ld: fatal: ошибка перемещения: R_SPARC_TLS_LDM_CALL: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PolvHand ateEE15getThreadStatusEvE12threadStatus: привязано к: CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: перемещение недопустимо, когда нет привязки к создаваемому объекту ld: fatal: ошибка перемещения: R_SPARC_TLS_LDO_id_pile_file: qfid: файл / файл: файл: 0 sys / posix /PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/ недопустимая позиция: недопустимая пересылка R_SPARC_TLS_LDO_ADD: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreads для создаваемого объекта: ld: fatal: ошибка перемещения: R_SPARC_TLS_LDM_LO10: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15Del etionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязано к: CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: перемещение недопустимо, когда не привязан к создаваемому объекту sys / posix /PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/ недопустимая позиция: недопустимая пересылка R_SPARC_TLS_LDM_CALL: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getthix к создаваемому объекту ld: fatal: ошибка перемещения: R_SPARC_TLS_LDO_LOX10: файл CMakeFiles / qpidcommon.dir / qpid / sys / posix / PosixPoll er.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к: CMakeFiles/qpidcommon.dir/qpid/ sys / posix / posix / posixPol__объект_файла_файла /qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: symbol _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к объекту CMakeFiles. л.д.: со смертельным исходом: перемещение ошибка: 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: fatal: ошибка перемещения: R_SPARC_TLS_LDM_ADD: файл CMakeFiles / qpidco mmon.dir / qpid / sys / posix /PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatusEvE12threadStatus: привязан к:: со смертельным исходом: перемещение ошибка: 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: перемещение недопустимо, когда не привязан к создаваемому объекту qpid / sys / posix /PosixPoller.cpp.o: перемещение недопустимо, когда нет привязки к создаваемому объекту ld: fatal: ошибка перемещения: R_SPARC_ TLS_LDO_ADD: файл CMakeFiles/qpidcommon.dir/qpid/sys/posix/PosixPoller.cpp.o: символ _ZZN4qpid3sys15DeletionManagerINS0_19PollerHandlePrivateEE15getThreadStatus для создаваемого объекта * * * Код ошибки 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 target
src/CMakeFiles/qpidcommon.dir/all'Текущий рабочий каталог /export/home/user/qpid-cpp-0.34/build * * * Код ошибки 1 Следующая ошибка вызвала ошибку: make -f CMakeFiles/Makefile2 все make: Fatal ошибка: команда не выполнена для цели `all'
Редактировать: вот команда компоновщика
/usr/ccs/bin/ld -V -G -dy -z text -M /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.9.2/../../../libgcc-unwind.map -Y P,/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/TxRollbackoFid.Com.dir / кв pid/framing/FilePublishBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileAckBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionCompletedBody.cpp.o CMakeFiles/qpidcomessionDe /.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileRejectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionExpectedBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageAcceptoody. /qpidcommon.dir/qpid/framing/DtxStartBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamCancelBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamPublishBody.cppdircipcomcom.comF qpid/framing/ConnectionStartOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ServerInvoker.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileOpenOkBody.cpp.o CMakeFiles/qpidcommon.birc /..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/ frapidSody.o CMakeFiles/qpidcommon.dir/qpid/framing/TxCommitBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageFlushBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQPakeFid. CMP.dir/qpid/framing/MessageSetFlowModeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MethodBodyFactory.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FragmentProperties.cpp.o CMakeFiles/qirid CMMeFiles / qpid framing/FileDeliverBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionCloseBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueQueryResult.cpp.o CMakeFiles/qpidcommon.dir/qppid..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 CMakecommon /qpid/framing/Xid.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionAttachBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/XaResult.cpp.o CMakeFiles/qpidcommon.dir/qpidBid. fra cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExchangeBindBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ExecutionResultBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileConsFakePo. qpidcommon.dir / qpid / framing / FileQosBody.cpp.o CMakeFiles / qpidcommon.dir / qpid / framing / SessionRequestTimeoutBody.cpp.o CMakeFiles / qpidcommon.dir / qpid / framing / FileProperties.cpp.opid_comid.compid.exe /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/qpidcomidir. framing / framing.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/AMQP_ServerProxy.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionTuneOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ CMPF 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/qpid CMomeFiles /qpid/framing/DtxGetTimeoutBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueDeclareBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TypeCode.cpp.o CMakeFiles/qpidcomid. fra.Did.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/qpidcommonQB.circ.dir.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 CMcomFiles.dir/qpid/framing/ExchangeBoundBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageResumeResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/SessionCommandPointBody.cpp.o CMakeFiles/qpid CMakeFiles / qpid framing/MessageResumeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/DtxRecoverResult.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/StreamDeliverBody.cpp.o CMakeFiles/qpidcommon.dir/ frappid.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/frappkBody CMakeFiles/qpidcommon.dir/qpid/framing/SessionDetachBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionStartBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileCancelBody.mon.Firp.cirp. /qpid/framing/MessageFlowBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/QueueDeleteBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionSecureBody.cpp.o CMakeFiles/qpidcom. DtxForgetBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionCloseOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/TxSelectBody.cpp.o CMakeFiles/qpidcommon.dir/qpid. 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/qpido.os CMakeFiles / qpidcommon.dir / qpid / framing / MessageStopBody.cpp.o CMakeFiles / qpidcommon.dir / qpid / framing / StreamConsumeOkBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/FileOpenBody.common.ir.pirp.cirp /qpid/framing/MessageSubscribeBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/ConnectionTuneBody.cpp.o CMakeFiles/qpidcommon.dir/qpid/framing/MessageProperties.cpp.o CMakeFiles/qpidcommon.ir 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/qpidpmonid.dir 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/qpidcommond. 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/qpidcom. 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.cppo. 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/Plugincpp..o CMakeFiles/qpidcommon.dir/qpid/RefCountingBuffer.cpp.o CMakeFiles/qpidcommon.dir/qpid/SessionState.cpp.o CMakeFiles/qpidcommon.dir/qpid/SessionId.cpp.o CMakeFiles/qpidUpids..cpp.o CMakeFiles/qpidcommon.dir/qpid/Url.cpp.o CMakeFiles/qpidcommon.dir/qpid/UrlArray.cpp.o CMakeFiles/qpidcommon.dir/qpid/NullSaslClient.cpp.o CMakeFiles /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/ frap.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.eir / frapBatQodyBid.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/qpid 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.Fppo. /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.d /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/qpid /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 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/qpidpmon.dir / /amqp/CharSequence.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/DataBuilder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/Decoder.cpp.o CMakeFiles/qpidcommon.dir/qpidor. am.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 qpidcommon.dir/qpid/amqp/MapSizeCalculator.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MapBuilder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MapReader.cpp.o CMakeFmon / /amqp/MessageEncoder.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MessageId.cpp.o CMakeFiles/qpidcommon.dir/qpid/amqp/MessageReader.cpp.o CMakeFiles/qpidcommon.dir/qpid/am.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. Итак 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.o
2 ответа
Недостаточно информации, чтобы полностью объяснить или решить вашу проблему, но я могу предложить несколько "подсказок". Перемещение R_SPARC_TLS_LDO_ADD используется для реализации локального хранилища потока. В частности, он используется с локальной динамической моделью TLS, одной из четырех моделей, используемых для реализации TLS.
Когда локальная динамическая модель используется для ссылки на переменную TLS, эта переменная должна быть определена в том же динамическом объекте (разделяемая библиотека), который ссылается на нее. Получаемая ошибка указывает на то, что локальная статическая переменная thead threadStatus
определяется в функции qpid::sys::DeletionManager<qpid::sys::PollerHandlePrivate>::getThreadStatus
нигде не определяется в создаваемой общей библиотеке (libqpidcommon.so.2.0.0). Вместо этого он определен в какой-то другой разделяемой библиотеке, с которой он связан (возможно, libqpidtypes.so.1.0.0).
Почему генерируется эта ошибка, неясно. По умолчанию GCC использует глобальную динамическую модель при компиляции с -fpic
, Когда на локальные переменные потока ссылаются с использованием глобальной динамической модели, они могут находиться в любой разделяемой библиотеке, а не только в создаваемой. Вы можете попробовать использовать -ftls-model=global-dynamic
вариант явно, но если что-то не использует -ftls-model=local-dynamic
явно, это не должно иметь никакого эффекта.
Возможно, что GCC неправильно оптимизирует ссылки на threadStatus
, Если GCC определяет, что локальная переменная потока не может быть доступна из другой единицы перевода, он будет использовать локальную динамическую модель для ссылки на нее, поскольку эта модель быстрее, чем более общая глобальная динамическая модель. Проблема также может быть из-за чего-то в исходном коде, который вы компилируете, из-за ошибки в make-файле или из-за ошибки в компоновщике.
Для 64-битных двоичных файлов SPARC может потребоваться таблица перемещения большего размера, чем предусмотрено -fpic
вариант. использование -fPIC
(верхний регистр). См. Oracles Linker и руководство по библиотекам:
SPARC: -Kpic и -KPIC Опции
Для двоичных файлов SPARC небольшая разница между параметром -K pic и альтернативным параметром -K PIC влияет на ссылки на записи в таблице глобальных смещений....
Попробуйте скомпилировать с помощью компиляторов Solaris Studio, и вы, скорее всего, получите более описательное сообщение об ошибке, такое как перечисленные в связанном документе Oracle.