我有一些示例C代码,我希望这些代码可以适应我的需求。在此之前,我尝试按原样编译示例。C代码包含#include参考,我可以在'inc'目录中找到.h文件。还有一个对应的“ lib”目录。我正在努力寻找需要编译代码的命令行。
到目前为止,我已经设法做到以下几点;
gcc -o amqsinqa -I/opt/mqm/inc amqsinqa.c -L/opt/mqm/lib -lcmqc
Run Code Online (Sandbox Code Playgroud)
但是它“找不到-lcmqc”。我已经在lib中查看了,很正确地没有cmqc。如何确定这里需要的-l选项?
代码看起来很简单,有include引用;
#include <cmqc.h>
Run Code Online (Sandbox Code Playgroud)
还有电话本身;
MQCONN(QMgrName,&Hcon,&CompCode,&CReason);
Run Code Online (Sandbox Code Playgroud)
如果我在命令行中省略了-l选项,我会得到;
undefined reference to 'MQCONN'
Run Code Online (Sandbox Code Playgroud)
这不足为奇。MQCONN存在于cmqc.h中。
小智 5
为了尝试帮助他人,此参考非常有用:
64位应用程序:https : //www.ibm.com/support/knowledgecenter/zh-CN/SSFKSJ_9.1.0/com.ibm.mq.dev.doc/q028490_.htm
32位应用程序:https : //www.ibm.com/support/knowledgecenter/SSFKSJ_9.1.0/com.ibm.mq.dev.doc/q028480_.htm
综上所述:
-I 是针对产品包括的,(对于Linux)通常在 /opt/mqm/inc-L是示例中的库路径(对于Linux),通常在/opt/mqm/lib(对于32位应用程序)和/opt/mqm/lib64(对于64位应用程序)中-l (小写L)用于所需的一个或多个库, 您需要的实际库是:
mqm-服务器绑定的C应用程序(即-lmqm与链接的应用程序libmqm.so)mqic-客户端绑定的C应用程序(即-lmqic与链接libmqic.so)..以及后缀(_r如果要作为线程应用程序构建)(即,您也要与之链接-lpthread,即提供-lmqm_r或-lmqic_r实际上与libmqm_r.so或链接libmqic.so)
cmqc.h是主头文件的名称,cmq*.h您还可以选择包含其他头文件。
如果您使用的是(稳定的)C ++库,则命令行中将包含其他库,但这不在此答案的范围内-请参阅引用的链接