2016-08-12 8 views
-3

linkの "Real"クロスコンパイラの説明を使用してガイドを実行します。ガイドのbottonには、標準的なmakefileがあります。私は簡単なプログラムをC言語で書いています。今、私はライブラリ "ev3c.h"でプログラムを書くつもりです。このライブラリをmakefileにどのように追加できますか?メイクファイルにライブラリを追加

+0

これはヘッダーです。あなたのソースにそれを含めてください。ライブラリをリンクするには(例えば、libblah.aはコンパイラオプションとして-lblahを使用します) – rscarson

+0

申し訳ありませんが、私の言うことを理解できません。私のev3c.hのパスは/ home/daniele/ev3c/includeです。 makefile? – Daniele

答えて

0

のトップへの#include「ev3c.h」を追加し、ヘッダを持っている、でそれに-I /home/daniele/ev3c/includeを渡しますレシピ それは#include "someheader"とそのパスから#includeを許可します。

インクルードファイルのMake処理に関しては、暗黙的な依存関係があります。つまり、コンパイラがclanggccなどのファイルを検出できるため、依存関係を明示的に指定したくないからです。それらを適切なMakefileルールに追加してください。例えば

%.o: %.c 
    $(COMPILE.c) -I /home/daniele/ev3c/include $(OUTPUT_OPTION) $< -MMD -MF $(patsubst %.o,%.o.d,[email protected]) 

-include $(wildcard *.o.d) 

これはコンパイラを持っていますが、各コンパイルされたCファイルとの依存関係を含める検出

-MMD -MF somefile

あなたは、GCCや打ち鳴らすとの#include依存性検出のこの種を行うことができます -include行でこれらの依存関係がMakefileに追加されるため、Cファイルに "foo.h"とfoo.hが変更された場合、明示的な依存関係として foo.hが指定されていない場合でも makeは再コンパイルをトリガーします。

-1

.hファイルはヘッダーです。ヘッダーは、ライブラリのようにコンパイル時ではなく、ソースコードに含まれています。

#include "ev3c.h" 

たとえば、

ライブラリの拡張子は、たとえば.aのように異なります。コンパイラを呼び出す行のmakefileにlibev3c.aを追加すると、

-lev3c 

が追加されます。あなたはGCCや打ち鳴らすを使用している場合しかし、あなたはそう簡単にソースコード(.cファイル)

+0

おそらく '-I/home/daniele/ev3c/include'と' -L/home/daniele/ev3c/lib'をコマンドラインに追加する必要があります。おそらく 'EV3CDIR = $ {HOME}/ev3c'によってマクロとして扱われ、makeルールに' $ {EV3CDIR} 'が使われるかもしれません。 –

関連する問題