我正在尝试从makefile链接到.so库文件。我的项目中有三个文件:main.cpp,shm.h和shm.cpp。 main.cpp包括shm类。此外,shm类依赖于存储在alcommon库(libalcommon.so)中的几个头文件。

我的makefile当前编写如下。我的想法是.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

最佳答案

您需要将程序本身作为目标,这就是.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

关于c++ - C++链接到makefile中的.so文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37417681/

10-11 23:01
查看更多