2016-05-24 11 views
0

メイクファイルから.soライブラリファイルにリンクしようとしています。私は私のプロジェクトにmain.cpp、shm.h、およびshm.cppという3つのファイルを持っています。 main.cppにはshmクラスが含まれています。さらに、shmクラスはalcommonライブラリ(libalcommon.so)内に格納されているいくつかのヘッダファイルに依存しています。C++メイクファイル内の.soファイルへのリンク

私のメイクファイルは現在次のように書かれています。私の考えは、.soファイルはshm.oの依存関係でなければならないので、そのように含めなければなりません。

Variables 
CXXFLAGS=-Wall -g 
CXX = g++ 

#Executable 
#TransformTests: TransformTests.o Transform.o 
#  $(CXX) $(CXXFLAGS) -o TransformTests TransformTests.o Transform.o 

#Dynamics Library Creation 


#Object Targets 
main.o: main.cpp shm.h 
     #(CXX) $(CXXFLAGS) -c main.cpp 

shm.o: shm.cpp shm.h -L../../naoqi-sdk-2.1.3.3-linux32/lib -lalcommon 
     $(CXX) $(CXXFLAGS) -c shm.cpp 

clean: 
     rm -f *o main 
     rm -f *o shm 

all: shm main 

答えて

0

あなたが対象となるプログラム自体を必要とし、.soは(コンパイル、リンク時ではない)で出番です。このようなもの:

Variables 
CXXFLAGS=-Wall -g 
CXX = g++ 

#Executable 
#TransformTests: TransformTests.o Transform.o 
#  $(CXX) $(CXXFLAGS) -o TransformTests TransformTests.o Transform.o 

#Dynamics Library Creation 


#Object Targets 
main.o: main.cpp shm.h 
     $(CXX) $(CXXFLAGS) -c main.cpp 

shm.o: shm.cpp shm.h 
     $(CXX) $(CXXFLAGS) -c shm.cpp 

myprog: shm.o main.o 
     $(CXX) $(CXXFLAGS) -o myprog shm.o main.o -L ../../naoqi-sdk-2.1.3.3-linux32/lib -lalcommon 

clean: 
     rm -f *o main 
     rm -f *o shm 

all: shm main 
+0

ヘッダーの依存関係を自動生成したい場合があります。それ以外の場合は、エラーが発生しやすくなります。 –

+0

.soライブラリのヘッダファイルをインクルードしているという事実をどうやって回避するのですか? – Austin

+0

あなたはそれを回避する必要はありません。コンパイル時にコンパイラに見える限り(必要に応じて関連する '-I'スイッチで)動作します。 – Smeeheey

関連する問題