В моем make-файле у меня есть строка

/usr/bin/gcc -m64 -DMQ_SEND  /home/avalanche/oleg/src/ctm_mq_con_ex.o -o  /home/avalanche/oleg/bin/ctm_mq_con_ex -LP/opt/mqm/lib64 -lmqm -lmqmcs -lmqmzse -lnsl -ldl    

Когда я запускаю его, ошибка:

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lmqm
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lmqmcs
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lmqmzse

Я не понимаю, почему он пытается найти библиотеку MQ в неправильном месте:

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lmqm   

Если я знаю, библиотека MQ это:

/opt/mqm/lib/libmqm.so    
/opt/mqm/lib/libmqm_r.so    
/opt/mqm/lib/libmqmcs.so    
/opt/mqm/lib/compat/libmqm.so    
/opt/mqm/lib/compat/libmqm_r.so    
/opt/mqm/lib/libmqmcs_r.so/    
opt/mqm/lib/libmqmzse.so/    
opt/mqm/lib64/libmqm.so/    
opt/mqm/lib64/libmqm_r.so/    
opt/mqm/lib64/libmqmcs.so/    
opt/mqm/lib64/compat/libmqm.so/    
opt/mqm/lib64/compat/libmqm_r.so/    
opt/mqm/lib64/libmqmcs_r.so/    
opt/mqm/lib64/libmqmzse.so    

1 ответ1

0

https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-l

Опция -l для статических библиотек объектов, которые являются файлами libsomething.a. Как я вижу, в вашем /opt /mqm, скорее всего, нет ничего подобного. Там есть только .so разделяемый объект. Возможно, вы настроили MQ делать вещи с неправильной опцией, чтобы не генерировать статические библиотеки?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .