2011-01-23 3 views
1

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

Ошибки являются ошибками со всеми версиями.

Вот раздел из «сделать ошибку»:

/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 обычно обходят эту проблему? Есть ли способ загрузить эти СПЕЦИФИЧЕСКИЕ библиотеки, на которые он жалуется?

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

Линтон

+3

Возможно, вы пытаетесь использовать версию Solaris для Websphere MQ для Linux ... Solaris, вероятно, использует номера версий, которые ищет libmqm.so, тогда как Linux не работает. Однако простое изменение номера версии не позволит скомпилировать объектный код Sparc под Linux. –

+0

Вы, ребята, были на 100% прав ..... вы видите, что случилось, когда у меня есть «копия» папки Solaris UNZIPPED Websphere MQ на моей машине ... DEEP в моей структуре папок. Затем, когда я работал в Code Blocks, я сделал ПОИСК для «libmqm.so», и он взял WRONG lib в ту тупую папку Solaris ... aaarrgg. Я указал на правильный lib сейчас, и все составляет 100%. Еще раз спасибо за помощь; _) –

ответ

4

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

.../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

Перекрестное компиляция _is_ возможно, но это означает размещение отдельной библиотеки C и инструментальной цепочки. –

+0

Если бы ОП пытались перекрестно скомпилировать (в любом направлении), они, вероятно, сказали бы так, и в любом случае они не получили бы * те * сообщения об ошибках. – zwol

+0

Привет, странно, что я загрузил 64-разрядную версию Linux x86 и установил ее на Mint. У меня также есть копия версии Solaris, но я ее не установил ... Я снова установлю все и повторю попытку ... спасибо ;-) –

0

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

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

После установки вы должны иметь возможность компилировать программы, если у вас есть все библиотеки prereq, такие как правый libstdC++. Эти требования перечислены на платформе на странице WMQ Detailed System Requirements.Наконец, есть подробные инструкции о том, как создавать программы для WebSphere MQ на Linux в теме Infocenter, названной, достаточно подходящей, Building your application on Linux. В этом разделе приведены примеры команд компиляции, требования к пути к библиотеке и т. Д.

+0

Привет, спасибо за вашу информацию, очень благодарен ;-) –

Смежные вопросы