• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Makefileと共有ライブラリ)

Makefileと共有ライブラリを使ったmain.cのコンパイル方法とエラー対処法

このQ&Aのポイント
  • Makefileを使用してmain.cと共有ライブラリ(libsub1.soとlibsub2.so)をコンパイルする方法を教えてください。
  • Makefileで.oから.soを生成する方法がうまくいかない場合、どのように記述すればよいのか教えてください。
  • 生成された共有ライブラリ(libsub1.soとlibsub2.so)を使用してmainをコンパイルするMakefileの書き方について教えてください。

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

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

このように書けばできなくはないですが、No.2の方が指摘されているように、 ライブラリとオブジェクトが1:1とは限らないのできっちりルールを書かれた方が よいように思います。 lib%.so: %.o     $(CC) $(SHAD) -o $@ $< もしくは、Makefileをそのままにして、ソースのファイル名を sub1.c、sub2.cではなく、 libsub1.c、libsub2.cとする。

noname#182748
質問者

お礼

回答ありがとうございました。助かりました。

その他の回答 (2)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

> libsub1.so:sub1.o > gcc -shared -o libsub1.so sub1.o サフィックスルールならファイル名が対応してないと駄目です。要は libsub1.so なら libsub1.c に対応するみたいな。 %ルールとかは使えると思う。 ただライブラリにするくらいだとオブジェクト一つということは無いだろうし、無理に省略することもないかと。

noname#182748
質問者

お礼

回答ありがとうございました。助かりました。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

サフィックスルールはサフィックスが変わるルールしか書けないのでできません。 libsub1.so, libsub2.so が sub1.so, sub2.soでよければ書けますけど。

noname#182748
質問者

お礼

回答ありがとうございました。助かりました。

関連するQ&A