質問: $(OBJECTS:.o=.d) all: $(TARGET) $(TARGET): $(OBJECTS) $(COMPILER) $(CFLAGS) $(LIBS) -o $@ $^ $(LDFLAGS) $(OBJDIR)/%.o: $(SRCDIR)/%.cpp -mkdir -p $(OBJDIR) $(COMPILER) $(CFLAGS) $(INCLUDE) $(LIBS) -o $@ -c $< clean: -rm -f $(OBJECTS) $(DEPENDS) $(TARGET) -include $(DEPENDS) ``` ### 補足情報(FW/ツールのバージョンなど) gcc 5.4.0 ubuntu16.4 C++
回答: こんにちは。 念の為の確認ですが、`/home/NNPACK/lib/libnnpack.a /home/NNPACK/lib/libpthreadpool.a /home/NNPACK/lib/libcpuinfo.a`は静的リンク用にビルドされたライブラリであることに間違いないでしょうか? linuxには詳しくはないのですが、「静的リンク・ライブラリ」と「動的リンク・ライブラリの静的ロード用のファイル」は同じファイル名であることもあります。 前者は当該関数の中身も含まれています。後者は動的リンク・ライブラリをロードする際に必要な情報が入っているだけで中身は入っていません。後者をリンクすると動的リンクになる筈です。 後者の場合、前回の質問の回答でコメントしたようにlinuxでの共有ライブラリのリンクについての現象が起きている可能性があります。 > > 静的リンクにするためso用makeファイルを書き換えましたが、 > > 上手くいかず同じエラーが出続けています。 > > > 変更内容を見てみましたが、関連する修正は`INCLUDE+= -static -DNNPACK -I/home/spot1/NNPACK/include`を追加しているだけですね? これはリンクには無関係です。 makefileを手で作るためには、ビルドする際の手順について詳しい理解が必須です。まずはスクリプトで直接gccコマンドを記述してビルドすると理解が深まります。 その方が回答も付きやすいと思いますよ。makefileに詳しい方は多くはないと思いますので。 実は私もその一人です。makefileの自動生成ツールのCMakeに任せてますので。これはこれでたいへんですけど、マルチプラットフォーム対応時はかなり楽になります。 【蛇足ですが】 前回、用語について調べてもよく判らなかったら別質問を立てたほうが良い旨書きました。それでこの質問を立てられたのでしたら、ごめんなさい。 同じ課題に関する質問を複数立てるのは良くないです。同じ質問なら、以前の質問に追記した方が好ましいです。