如何在不知道包含文件的情况下编译C程序 [英] How to compile a C program without knowing the include files

查看:13
本文介绍了如何在不知道包含文件的情况下编译C程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些示例C代码,我希望对其进行调整以满足我的需要。在此之前,我将尝试按原样编译该示例。C代码包含一个#INCLUDE引用,我可以在‘inc.’目录中找到.h文件。还有一个对应的‘lib’目录。我正在努力寻找编译代码所需的命令行。

到目前为止,我已经设法做到了以下几点;

gcc -o amqsinqa -I/opt/mqm/inc amqsinqa.c -L/opt/mqm/lib -lcmqc
但它‘找不到-lcmqc’。我在lib中查找过,非常正确地说,没有cmqc。如何确定此处需要的-l选项?

代码看起来相当简单,有Include引用;

#include <cmqc.h>

和调用本身;

MQCONN(QMgrName,&Hcon,&CompCode,&CReason);

如果我在命令行中省略了-l选项;

undefined reference to 'MQCONN'

这并不令人惊讶。但是,cmqc.h中存在MQCONN。

推荐答案

若要尝试帮助他人,此参考信息很有用:

小结:

  • -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链接)

..如果您是作为线程化应用程序构建的(即您也链接了-lpthread,即提供了实际上与libmqm_r.solibmqic.so链接的-lmqm_r-lmqic_r),则后缀_r)

cmqc.h是主头文件的名称,您还可以选择包括其他cmq*.h头。

如果您使用的是(稳定的)C++库,命令行中还有其他库可以包含,但这超出了本答案的范围-请参阅引用的链接

这篇关于如何在不知道包含文件的情况下编译C程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆