前提・実現したいこと
Linuxにて配布用の静的ライブラリを作成しています。
app -> libtest2.a -> libtest1.a
という形で依存しており、libtest2.a(と依存ヘッダ)だけを静的ライブラリとして配布して利用してもらいたいのですが、
libtest2.aが内部で呼び出している、libtest1.aに対する参照エラーが出てしまいます。
staticライブラリを内包したstaticライブラリを作ることはできないでしょうか?
最終的にリンクするlibtest2.aの中身
[user@host app]$ ar t lib/libtest2.a test2.o libtest1.a
発生している問題・エラーメッセージ
make g++ -I./lib -c main.cpp g++ -o app main.o -L./lib -ltest2 ./lib/libtest2.a(test2.o): 関数 `call_test2()' 内: test2.cpp:(.text+0x5): `call_test1()' に対する定義されていない参照です collect2: エラー: ld はステータス 1 で終了しました make: *** [app] エラー 1
該当のソースコード
libtest1のMakefile
Makefile
1all: libtest1.a 2 3libtest1.a: test1.o 4 ar rcs $@ test1.o 5 6test1.o: test1.cpp 7 g++ -c test1.cpp
libtest2のMakefile
Makefile
1all: libtest2.a 2 3libtest2.a: test2.o lib/libtest1.a 4 ar rcs $@ test2.o lib/libtest1.a 5 6test2.o: test2.cpp 7 g++ -I./lib -c test2.cpp
appのMakefile
Makefile
1 2all: app 3 4app: main.o 5 g++ -o $@ main.o -L./lib -ltest2 6 7main.o: main.cpp 8 g++ -I./lib -c main.cpp
試したこと
- 最小サンプル作成(上記)
- arとg++のオプションをチェック
- appのMakefileに-ltest1を追加 -> 見つからないと言われてエラー
あなたの回答
tips
プレビュー