使用带有Makefile的C ++中的另一个库来构建动态库

问题描述

我正在使用artoolkit5。我对nftSimple进行了更改,并向nftSimple代码添加了另一个程序,该程序在artoolkit5文件夹和环境中运行良好。但是,我想将nftSimple制作成一个库(包括添加的程序)。

我正在尝试使用所有代码创建一个动态库。这是我用来构建.so文件的Makefile

UNAME = $(shell uname)

AR_HOME = ../..
AR_CPPFLAGS = -I$(AR_HOME)/include/linux-x86_64 -I$(AR_HOME)/include
AR_LDFLAGS = -L$(AR_HOME)/lib/linux-x86_64 -L$(AR_HOME)/lib

CC=gcc
CXX=g++ -std=c++11
CPPFLAGS = $(AR_CPPFLAGS)
CFLAGS = -O3 -shared -fPIC -march=core2 -DHAVE_NFT=1 -DUSE_GSTREAMER_1 -pthread -I/usr/include/gstreamer-1.0 -I/usr/lib/x86_64-linux-gnu/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/Opt/opencv/include
CXXFLAGS = -O3 -shared -fPIC -march=core2 -DHAVE_NFT=1 -DUSE_GSTREAMER_1 -pthread -I/usr/include/gstreamer-1.0 -I/usr/lib/x86_64-linux-gnu/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
LDFLAGS = $(AR_LDFLAGS) -L/usr/lib/x86_64-linux-gnu -L/usr/lib64
LIBS = -lKPM -lAR2 -lARgsub_lite -lARvideo -lAR -lARICP -lAR -lARUtil \
     -lglut -lglu -lGL -lX11 -lm -lpthread -ljpeg -lz -ludev -DUSE_GSTREAMER_1 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -ldc1394 -lraw1394  
AR=ar
ARFLAGS=rsU
RANLIB = true

TARGET = $(AR_HOME)/bin/libnftsimple.so 

HEADERS = \
    trackingSub.h \
    vectors.h \
    nftSimple.h

OBJS = \
    nftSimple.o \
    ARMarkerNFT.o \
    trackingSub.o \
    vectors.o

default build all: $(TARGET)

$(OBJS) : $(HEADERS)

$(TARGET): $(OBJS)
    $(CXX) -shared -fPIC $(LDFLAGS) -o $@  $^ $(LIBS) 

clean:
    -rm -f *.o *~ *.bak
    -rm $(TARGET)

allclean:
    -rm -f *.o *~ *.bak
    -rm $(TARGET)
    -rm -f Makefile

distclean:
    rm -f *.o
    rm -f Makefile

我不确定这是否是构建可包含所有依赖项和其他库(位于artoolkit的libs文件夹中)的库的正确方法

我想要的是:一个.so文件,其中包含使代码正常工作所需的所有依赖项和文件夹。这样,我只想#include头文件并在另一个程序中使用函数调用

我用来编译第二个程序的makefile(将使用artoolkit库):

CC       = g++
CFLAGS   = -Wall
LDFLAGS  = -L. -lnftsimple
OBJFILES = main.o
TARGET   = main
all: $(TARGET)
$(TARGET): $(OBJFILES)
    $(CC) $(CFLAGS) -o $(TARGET) $(OBJFILES) $(LDFLAGS)
clean:rm -f $(OBJFILES) $(TARGET) *~

不确定这是否正确。请随时提供任何帮助或输入

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)