• ベストアンサー

gccに関する質問

gccを実行するときの引数に関する質問です。 gccでコンパイルするときはヘッダーファイルのパスや、ライブラリ(拡張子が、.soのやつ)を指定しますがヘッダーファイルの方は、ソースファイルでもインクルードしているくらいだし、なんとか探してパスを指定すればよいのですが、ライブラリの場合はヘッダファイルと違ってインクルードする物ではないので、名前わからないし検討もつきません。 ヘッダファイルに該当するライブラリを探す方法はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.4

/lib および /usr/lib に存在する全てのライブラリに対して nm すれば、ライブラリが strip されていない限り、使用した関数がどのライブラリで定義されているかを確認できると思います。 (ex.) nm /usr/lib/libc.so ただ、標準的な関数は全て libc や libm.so に含まれており、それ以外の関数を使うということであれば、普通はどのライブラリにその関数が含まれているかを知った上で使うものだと思いますが。

tukai
質問者

お礼

ありがとうございました。 その方法で問題は解決しました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • negi-bozu
  • ベストアンサー率25% (5/20)
回答No.3

一度コンパイルをしてみて、参照エラーが発生したら どの関数がリンクされていないかを覚えておき、 その関数が含まれるライブラリをネット等でさがします。 また、それらしきライブラリのアーカイブからファイル名を抽出してみます。

tukai
質問者

お礼

ありがとうございました。 今度試してみたいと思います

すると、全ての回答が全文表示されます。
回答No.2

C言語であれば、おおかた libc.a で済んでしまうと思います。 数学的なものは(math.h由来)、libm.a です。 私は、色々なプログラムを書いていますが、-lm 以外のリンカオプション(ライブラリ指定)を使用したことがありません。 大したプログラムを書いているわけではありませんが、stdio.h、stdlib.h、string.h、memory.h、ctype.h 等でリンクエラーが出たことはありません。

tukai
質問者

お礼

参考になりました。 libc.aというライブラリでは、ソケットやプロセス(forkとかdeamonとか)の等でも大丈夫ですか?

すると、全ての回答が全文表示されます。
回答No.1

コンパイルのときですか? -Lで探す場所を指定します。

tukai
質問者

お礼

質問の書き方が悪かったようですが、その「探す場所」をどうやって探すかの質問です。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • プランジャーとシリンダーは、工学において重要な要素です。
  • プランジャーは、円筒形の棒状の部品で、一定の力を加えて往復運動することができます。
  • 一方、シリンダーは、プランジャーが収まる空間を提供し、プランジャーの運動を制御します。
回答を見る

専門家に質問してみよう