Makefile 在 LINUX 上查找 MQ 库的位置错误

Makefile 在 LINUX 上查找 MQ 库的位置错误

在我的 makefile 中我有一行

/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

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

-l 选项用于静态对象库,即 libsomething.a 文件。据我所知,您的 /opt/mqm 可能没有这种东西。那里只有 .so 共享对象库。您可能配置了 MQ make stuff,并使用了错误的选项,导致不生成静态库?

相关内容