Несоответствие общей версии Lib во время компиляции? - PullRequest
1 голос
/ 23 января 2011

Я получаю некоторые ошибки компиляции при компиляции кода C на моей установке Mint Linux.

Ошибки - это ВСЕ проблемы несовпадения версий.

Вот раздел «make error»:

/usr/bin/ld: warning: libthread.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsocket.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libc.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libdl.so.1, needed by /home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so, not found (try using -rpath or -rpath-link)
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xihThreadKey'
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsCreateThreadMutexSemX'
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `thr_getspecific'
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsReleaseThreadMutexSem'
/home/lynton/Backup/Logosworld/IBM/Websphere MQ for Solaris x86 64bit/CZRV9ML/mqm/root/opt/mqm/lib64/libmqm.so: undefined reference to `xcsRequestThreadMutexSem'
collect2: ld returned 1 exit status
make: *** [idoclink_outbound] Error 1

Так, например, он жалуется на "libsocket.so.1", но у меня есть только "libsocket.so.0"?

Как разработчики на C обычно обходят этот видвопрос?Могу ли я как-нибудь скачать эти ОСОБЫЕ библиотеки, на которые он жалуется?

Спасибо за помощь; -)

Линтон

Ответы [ 2 ]

4 голосов
/ 23 января 2011

Вы пытаетесь скомпилировать код, написанный для Solaris в Linux, и ни система сборки, ни код не были должным образом обусловлены, чтобы это работало. Подсказка - это имя каталога сборки -

.../Websphere MQ for Solaris x86 64bit/...

подсказка два в том, что он, кажется, жестко связал несколько имен динамических библиотек, специфичных для Solaris (Linux не имеет libthread или libsocket, насколько мне известно, а его libc и libdl делают не используйте эти сонамы - я не знаю, откуда у вас libsocket.so.0, но это, вероятно, что-то совершенно иное, чем то, что ищет эта программа), и ключ три -

libmqm.so: undefined reference to `thr_getspecific'

где thr_getspecific - определенно непереносимая библиотека-специфическая подпрограмма Solaris (переносимый эквивалент pthread_getspecific, но перенос - это не просто изменение имени в коде).

Вернитесь туда, где вы получили код, и посмотрите, есть ли у них вариант Linux. Если этого не произойдет, у вас впереди много работы.

0 голосов
/ 23 января 2011

Библиотеки WebSphere MQ доступны с установкой сервера или клиента. Разработчики C обычно решают эту проблему, устанавливая программное обеспечение WMQ. Даже если вам удастся получить несжатые нужные библиотеки WMQ, вам придется ужасно долго компилировать, если они не установлены в ожидаемые места. Например, каталог сообщений WMQ устанавливается в каталоги NLS и на него ссылаются во время компиляции. Возможно, вам удастся разрешить все зависимости с помощью параметров компилятора, указывающих на каждую библиотеку, но будет гораздо быстрее и проще просто установить программное обеспечение.

Если все, что вам нужно, это клиентские библиотеки, их можно бесплатно загрузить как SupportPac MQC7 , хотя требуется регистрация. Если вам нужны серверные библиотеки, вам необходимо приобрести WMQ Server или загрузить пробную версию . Основное отличие состоит в том, что серверные библиотеки могут подключаться к локальному QMgr с использованием общей памяти, а клиентские библиотеки всегда подключаются по сети. Если вам нужна транзакционность XA, вам нужны серверные лицензии, независимо от того, как вы подключаетесь. Функциональность XA является частью дистрибутива сервера WMQ и требует лицензионных обязательств на каждом узле, где он используется.

После установки вы сможете компилировать программы, предполагая, что у вас есть все библиотеки prereq, такие как правильная libstdc ++. Эти требования перечислены для каждой платформы на странице подробных системных требований WMQ . Наконец, есть подробные инструкции о том, как создавать программы для WebSphere MQ в Linux, в теме инфоцентра, названной, соответственно, Сборка приложения в Linux . В этом разделе приведены примеры команд компиляции, требования к пути к библиотеке и т. Д.

...