c++ - 如何将您自己的 C 代码编译为 ModemManager 的一部分

标签 c++ gcc

我想编写简单的 C 代码来使用 ModemManager 1.4.12 中的功能,以使用 ModemManager 中提供的一些功能来执行调制解调器相关功能。 我已经添加了我需要的标题:

#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <glib.h>
#include <gio/gio.h>
#include <libmm-glib.h>
#include "mmcli.h"
#include "mmcli-common.h"

用gcc -o test test.h编译

但它提示找不到 glib.h。

当我编译时: gcc -Wall pkg-config --cflags libnm pkg-config --cflags --libs gio-2.0 它提示 fatal error :libmm-glib.h:没有这样的文件或目录 当我使用 -I 来包含 libmm-glib.h 时,它会提示找不到 ModemManager.h。

我应该继续使用 -I 添加目录还是有更合适的方法?

谢谢

最佳答案

不清楚你要完成什么...

您想构建一个单独的程序,使用 libmm-glib 通过 DBus 与 ModemManager 对话吗?如果是这样:

 /* save as test.c and compile with:
  * $ gcc -o test `pkg-config --cflags --libs mm-glib` test.c
  */
 #include <libmm-glib.h>

 int main (int argc, const char **argv)
 {
 ...
 }

请注意,pkg-config 请求 mm-glib cflags/libs 应该足够了,因为这将拉取任何额外的依赖 cflags/libs,如 glib/gobject/gio。

但是从您的代码示例来看,您还添加了 mmcli 特定 header ...那么您是否想使用新功能扩展 mmcli?如果是这样,您应该扩展 mmcli 源,而不是提供自定义 gcc 命令,如果您需要在 mmcli 的编译中添加新文件,只需修改 cli/下的 Makefile.am 即可。

关于c++ - 如何将您自己的 C 代码编译为 ModemManager 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36273209/

相关文章:

C++ 文本文件 I/O

c++ - 带有类对象的 iomanip

c++ - cc1plus : warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++

linux - 在运行时查找我的 Linux 共享库

c++ - 在 C++ 中使用模板进行矩阵乘法

c++ - 中缀计算器表达式解析器

c++ - 如何保证模板结构中 const 静态成员的初始化顺序

c++ - 数组大小取决于 sizeof() 结构字段

c++ - 我在哪里可以获得 glibc?

c - 我如何让 C 识别未正确安装的库?