- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Makefileと共有ライブラリ)
Makefileと共有ライブラリを使ったmain.cのコンパイル方法とエラー対処法
このQ&Aのポイント
- Makefileを使用してmain.cと共有ライブラリ(libsub1.soとlibsub2.so)をコンパイルする方法を教えてください。
- Makefileで.oから.soを生成する方法がうまくいかない場合、どのように記述すればよいのか教えてください。
- 生成された共有ライブラリ(libsub1.soとlibsub2.so)を使用してmainをコンパイルするMakefileの書き方について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
このように書けばできなくはないですが、No.2の方が指摘されているように、 ライブラリとオブジェクトが1:1とは限らないのできっちりルールを書かれた方が よいように思います。 lib%.so: %.o $(CC) $(SHAD) -o $@ $< もしくは、Makefileをそのままにして、ソースのファイル名を sub1.c、sub2.cではなく、 libsub1.c、libsub2.cとする。
その他の回答 (2)
- trapezium
- ベストアンサー率62% (276/442)
回答No.2
> libsub1.so:sub1.o > gcc -shared -o libsub1.so sub1.o サフィックスルールならファイル名が対応してないと駄目です。要は libsub1.so なら libsub1.c に対応するみたいな。 %ルールとかは使えると思う。 ただライブラリにするくらいだとオブジェクト一つということは無いだろうし、無理に省略することもないかと。
質問者
お礼
回答ありがとうございました。助かりました。
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.1
サフィックスルールはサフィックスが変わるルールしか書けないのでできません。 libsub1.so, libsub2.so が sub1.so, sub2.soでよければ書けますけど。
質問者
お礼
回答ありがとうございました。助かりました。
お礼
回答ありがとうございました。助かりました。