欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

makefile如何調(diào)用靜態(tài)庫的方法實現(xiàn)

 更新時間:2020年12月23日 09:52:20   作者:wch_NUDT  
這篇文章主要介紹了makefile如何調(diào)用靜態(tài)庫的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

makefile如何調(diào)用靜態(tài)庫

1、在windows下 g++環(huán)境中,調(diào)用一個python的靜態(tài)鏈接庫,在makefile文件有一段是全局的g++命令:

$(PROG): $(OBJS)
 $(CXX) $(LFLAGS) $^ -o $@

現(xiàn)在我要鏈接上一個python的靜態(tài)庫,lib存儲在makefile同目錄下libs文件夾下:

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

2、在Linux Ubuntu 18.04版本中添加靜態(tài)庫,視python版本而定:

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

Makefile 如何調(diào)用opencv 的靜態(tài)庫

main.cpp

#include <stdio.h>
#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: # 動態(tài)庫的時候需要尋找的路徑



#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 是用調(diào)用動態(tài)庫的方式來調(diào)用靜態(tài)庫,如果同時存在靜態(tài)庫和動態(tài)庫,會優(yōu)先調(diào)用動態(tài)庫

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

# 這種方式調(diào)用靜態(tài)庫,保證在在動態(tài)庫也存在的時候也能調(diào)用到靜態(tài)庫
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如何調(diào)用靜態(tài)庫的方法實現(xiàn)的文章就介紹到這了,更多相關makefile調(diào)用靜態(tài)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Qt6.0開發(fā)環(huán)境搭建步驟(圖文)

    Qt6.0開發(fā)環(huán)境搭建步驟(圖文)

    這篇文章主要介紹了Qt6.0開發(fā)環(huán)境搭建步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 詳解c++ atomic原子編程中的Memory Order

    詳解c++ atomic原子編程中的Memory Order

    在多核編程中,我們使用內(nèi)核對象【如:事件對象(Event)、互斥量對象(Mutex,或互斥體對象)、信號量對象(Semaphore)等】來避免多個線程修改同一個數(shù)據(jù)時產(chǎn)生的競爭條件。本文將詳細介紹c++ atomic原子編程中的Memory Order。
    2021-06-06
  • C++詳解如何實現(xiàn)單鏈表

    C++詳解如何實現(xiàn)單鏈表

    線性表的鏈式存儲又稱為單鏈表,它是指通過一組任意的存儲單元來存儲線性表中的數(shù)據(jù)元素。本文將用C++實現(xiàn)單鏈表,需要的可以參考一下
    2022-06-06
  • C語言實現(xiàn)簡單井字棋游戲

    C語言實現(xiàn)簡單井字棋游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C++如何有效地利用命名空間

    C++如何有效地利用命名空間

    談到C++編程中的模塊化和組織性時,命名空間(Namespace)是一個重要的概念,所以本文主要來和大家聊聊C++命名空間的概念、用法以及如何有效地利用它來管理代碼,有需要的可以參考下
    2023-09-09
  • QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能實例

    QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能實例

    TextEdit是我們常用的Qt控件,用來顯示文本信息,下面這篇文章主要給大家介紹了關于QT自定義QTextEdit實現(xiàn)大數(shù)據(jù)的實時刷新顯示功能的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • C語言實現(xiàn)井字棋游戲(人機對弈)

    C語言實現(xiàn)井字棋游戲(人機對弈)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)井字棋人機對弈游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C/C++ 獲取自身IP與域名片段的示例代碼

    C/C++ 獲取自身IP與域名片段的示例代碼

    這篇文章主要介紹了C/C++ 獲取自身IP與域名片段的示例代碼,幫助大家更好的理解和學習C/C++編程,感興趣的朋友可以了解下
    2020-10-10
  • C語言時間函數(shù)的ctime()和gmtime()你了解嗎

    C語言時間函數(shù)的ctime()和gmtime()你了解嗎

    這篇文章主要為大家詳細介紹了C語言時間函數(shù)的ctime()和gmtime(),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Qt中QPushButton組件的使用詳解

    Qt中QPushButton組件的使用詳解

    QPushButton是Qt庫中的一個重要組件,本文主要介紹了Qt中QPushButton組件的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07

最新評論