linux能调用windows下静态库,makefile如何调用静态库的方法实现

makefile如何调用静态库

1、在windows下 g++环境中,调用一个python的静态链接库,在makefile文件有一段是全局的g++命令:

$(PROG): $(OBJS)

$(CXX) $(LFLAGS) $^ -o $@

现在我要链接上一个python的静态库,lib存储在makefile同目录下libs文件夹下:

$(PROG): $(OBJS)

$(CXX) $(LFLAGS) $^ -o $@ ./libs/libpython37.a

2、在Linux Ubuntu 18.04版本中添加静态库,视python版本而定:

$(PROG): $(OBJS)

$(CXX) $(LFLAGS) $^ -o $@ -lpython3.6m

Makefile 如何调用opencv 的静态库

main.cpp

#include

#include "opencv2/opencv.hpp"

int main()

{

cv::Mat image = cv::imread("./testPic/jianhui.jpg");

//cv::imshow("xxx", image);

//cv::waitKey(40);

printf("image.col=%d image.row=%d \n", image.cols, image.rows);

cv::imwrite("aa.jpg", image);

return 0;

}

Makefile

EXE=main

#SUBDIR=src object

#CXXFLAGS:编译选项, LDFLAGS:链接选项

thirdparty_root := /local_install/static

CC := g++

#export PKG_CONFIG_PATH := ${thirdparty_root}/lib/pkgconfig:${PKG_CONFIG_PATH}

#INCS += `pkg-config --cflags opencv`

#LIBS += `pkg-config --libs opencv`

INCS := -I${thirdparty_root}/include

LIBS += -L${thirdparty_root}/lib -lopencv_imgcodecs -lopencv_dnn -lopencv_imgproc -lopencv_core

#LIBS += -L${thirdparty_root}/lib -lopencv_imgcodecs -lopencv_imgproc -lopencv_core # 亲们,顺序不能变,因为这个快把我整崩溃了

LIBS += -L${thirdparty_root}/share/OpenCV/3rdparty/lib -lIlmImf -llibjasper -llibjpeg -llibpng -llibtiff -llibwebp -lzlib -lippicv -ldl

CXXFLAGS := -Wall -c -O2 -std=c++11 $(INCS)

LDFLAGS := $(LIBS)

LDFLAGS += -lpthread

#LDFLAGS += -Wl,-rpath,${thirdparty_root}/share/OpenCV/3rdparty/lib:${thirdparty_root}/lib: # 动态库的时候需要寻找的路径

#CXX_SOURCES =$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*.cpp))

#CXX_OBJECTS=$(patsubst %.cpp, %.o, $(CXX_SOURCES))

CXX_OBJECTS := $(patsubst %.cpp,%.o,$(shell find . -name "*.cpp"))

DEP_FILES =$(patsubst %.o, %.d, $(CXX_OBJECTS))

$(EXE): $(CXX_OBJECTS)

$(CC) $(CXX_OBJECTS) -o $(EXE) $(LDFLAGS)

%.o: %.cpp

$(CC) -c $(CXXFLAGS) -MMD $< -o $@

-include $(DEP_FILES)

clean:

rm -rf $(CXX_OBJECTS) $(DEP_FILES) $(EXE)

test:

echo $(CXX_OBJECTS)

上面的Makefile 是用调用动态库的方式来调用静态库,如果同时存在静态库和动态库,会优先调用动态库

EXE=CppWebServer

#SUBDIR=src object

#CXXFLAGS:编译选项, LDFLAGS:链接选项

CC := g++

thirdparty_root := /local_install/static

#INCS += `pkg-config --cflags opencv`

INCS += -I/usr/lib/jdk1.8.0_191/include

INCS += -I/usr/lib/jdk1.8.0_191/include/linux/

INCS += -I./include

INCS := -I${thirdparty_root}/include

# 这种方式调用静态库,保证在在动态库也存在的时候也能调用到静态库

LIBS += ${thirdparty_root}/lib/libopencv_imgcodecs.a

LIBS += ${thirdparty_root}/lib/libopencv_dnn.a

LIBS += ${thirdparty_root}/lib/libopencv_imgproc.a

LIBS += ${thirdparty_root}/lib/libopencv_core.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/libIlmImf.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibjasper.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibjasper.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibjpeg.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibpng.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibtiff.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/liblibwebp.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/libzlib.a

LIBS += ${thirdparty_root}/share/OpenCV/3rdparty/lib/libippicv.a

LIBS += -L./lib -lTHFaceImage -lTHFeature

LIBS += -ldl

#LIBS += `pkg-config --libs opencv`

CXXFLAGS := -Wall -c -O2 -std=c++11 $(INCS)

LDFLAGS := $(LIBS)

LDFLAGS += -lpthread

#CXXFLAGS += -I/usr/local/include/

#LDFLAGS += -L/usr/local/lib -lopencv_world

#CXX_SOURCES =$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*.cpp))

#CXX_OBJECTS=$(patsubst %.cpp, %.o, $(CXX_SOURCES))

CXX_OBJECTS := $(patsubst %.cpp,%.o,$(shell find . -name "*.cpp"))

CXX_OBJECTS += $(patsubst %.c,%.o,$(shell find . -name "*.c"))

DEP_FILES =$(patsubst %.o, %.d, $(CXX_OBJECTS))

$(EXE): $(CXX_OBJECTS)

$(CC) $(CXX_OBJECTS) -o $(EXE) $(LDFLAGS)

%.o: %.cpp

$(CC) -c $(CXXFLAGS) -MMD $< -o $@

-include $(DEP_FILES)

clean:

rm -rf $(CXX_OBJECTS) $(DEP_FILES) $(EXE)

OBJ_DIR = obj

move:

if [ ! -d $(OBJ_DIR) ]; then mkdir -p $(OBJ_DIR); fi;\

mv $(CXX_OBJECTS) $(OBJ_DIR); \

mv $(DEP_FILES) $(OBJ_DIR); \

mv $(EXE) $(OBJ_DIR)

test:

echo $(CXX_OBJECTS)

到此这篇关于makefile如何调用静态库的方法实现的文章就介绍到这了,更多相关makefile调用静态库内容请搜索WEB开发者以前的文章或继续浏览下面的相关文章希望大家以后多多支持WEB开发者!

扫描关注:"WEB开发者网“公众号,分享WEB开发知识,让开发变得更简单!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值