2016-03-28 10 views
0

ModemManager 1.4.12の機能を使用して、モデム関連の機能を実行するために、ModemManagerで提供される機能の一部を使用する簡単なCコードを記述します。 私は私が必要とするヘッダを追加しました:GCC -oテストTEST.HModemManagerの一部として独自のCコードをコンパイルする方法

#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" 

コンパイルしますが、それはglib.hが見つからないと文句を言い。

私が使用してコンパイル:libmm-glib.h:私はlibmm-glib.hを含めるように-Iを使用する場合、そのようなファイルやディレクトリ いいえ、それはと文句を言い、それは致命的なエラーと文句を言いpkg-config --cflags libnmpkg-config --cflags --libs gio-2.0 -Wall GCC ModemManager.hが見つかりません。

-Iを指定してディレクトリを追加するか、より適切な方法がありますか?あなたが達成したいのか明確ではない

おかげ

+0

必要なヘッダファイルを含むディレクトリがすべて配置されている場合は、 '-I'を複数回使用して、インクルードしたい"すべての場所 "の場所を指す必要があります。エレガントな一般的な解決法はありません。 – mah

+0

そうですね、問題があります。私がそうすると、ベアボーンプログラムがコンパイルされます。しかし、私はまだ関数へのアクセスが必要なコードをコンパイルすることはできません: 'mm_modem_get_manufacturer 'への未定義の参照と定義を持つヘッダファイルを追加しました。アイデア? – Arn

+0

未定義(未定義で未定義であると言われているかもしれません)参照は、ヘッダファイルと何の関係もなく、コードをリンクすることと関連しています...ライブラリを指定していないことを示唆していますライブラリの順序を変更するか、ライブラリを複数回通過するリンカフラグを使用します)。 – mah

答えて

0

は...

あなたはDバスを経由してModemManagerに話をlibmm-glibのを使用する別のプログラムを構築したいですか?その場合:PKG-config設定はMM-glibのCFLAGSを要求していること

/* 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) 
{ 
... 
} 

注それは口が達者/ GObjectの/ GIOのように、任意の追加の依存関係のCFLAGS/libsのを引っ張ってくるよう/ libsには、十分なはずです。

コードサンプルの外見から、mmcliという特定のヘッダーも追加されています...新しい機能でmmcliを拡張したいですか?もしそうなら、カスタムgccコマンドを与える代わりに、mmcliソースを拡張し、mmcliのコンパイルで新しいファイルを追加する必要がある場合は、cli /のMakefile.amを変更してください。

関連する問題