2016-07-29 8 views
2

GNUでカスタムライブラリを作成するにはどうすればよいですか?私は何を意味することは次のとおりです。GNUでカスタムライブラリを作成するにはどうすればよいですか?

私たちがする#include < stdio.hに>を使用して、printfの

我々は今、私は私のカスタムヘッダーを作成するGCCのmain.cと

それをコンパイルして.A/.soができますライブラリファイル、私は環境変数C_INCLUDE_PATHを設定し、#include ""の代わりに#include <>でヘッダファイルをインクルードすることができます。しかし、私はまだで、それをコンパイルする必要が

のgccのmain.c -oプログラム-L /何/ -lwahtever

はそれを可能にすることです(.soが使用している場合は、設定された環境変数付き)それは#includeのように振る舞います< stdio.h>どこに対応するコマンドライン引数を含むパスを含める必要はありませんか?

+0

標準ライブラリのように '-l'を削除する方法はありますか? – Thenewstockton

答えて

0

-L/whatever/実際には-lwhateverは必要ありません。最初のオプションはあなたのライブラリへのパスを提供しますが、すでに#includeでそれを処理し、C_INCLUDE_PATHを修正しています。 2番目のオプションは、実行可能ファイルをリンクするライブラリをリンカに指示します。これの例は、Cの数学ライブラリの関数#include <math.h>を使用してコンパイルするときに、依然としてリンカオプション-lmathが必要です。あなたの質問に答えるには、いいえ。最初のオプションは削除できますが、2番目のオプションは削除する必要があります。

+0

これはうまくいきません。gcc main.c -o program lwhateverを使用している場合。リンカーは何も見つけられなかったと不平を言う。何か不足していますか? – Thenewstockton

+0

ダッシュを前に入れましたか?それは 'gcc main.c -o program -lwhatever'でなければなりません。また、GNUライブラリの命名規則は、ライブラリが 'libwhatever.a'または' libwhatever.so'であることを意味します。謝罪。 –

+0

いいえ...うまくいきません... -L/whatever /が必要です...おそらくC_INCLUDE_PATH以外の環境を設定する必要がありますか? – Thenewstockton

関連する問題