opencv - 如何将 OpenCV 库静态链接到我的项目?
问题描述
我手动编译了 OpenCV 库以使用以下命令获取静态库文件(*.a
在 OSX 上):
cmake -D CMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX=./instDir/ ../openCV/
make -j8
make install
然后我想从我的 C++ 源代码中获得一个独立的可执行文件,所以我创建了以下内容Makefile
:
CXX = g++
CXXFLAGS = -std=c++11
INC_PATH = `pkg-config --cflags ../cmake_bin_dir_static/instDir/lib/pkgconfig/opencv.pc`
LIBS = `pkg-config --libs --static ../cmake_bin_dir_static/instDir/lib/pkgconfig/opencv.pc`
SOURCEDIR := ../project/
SOURCES := $(wildcard $(SOURCEDIR)/*.cpp)
OBJDIR=$(SOURCEDIR)/obj
OBJECTS := $(patsubst $(SOURCEDIR)/%.cpp,$(OBJDIR)/%.o,$(SOURCES))
DEPENDS := $(patsubst $(SOURCEDIR)/%.cpp,$(OBJDIR)/%.d,$(SOURCES))
# ADD MORE WARNINGS!
WARNING := -Wall -Wextra
# .PHONY means these rules get executed even if
# files of those names exist.
.PHONY: all clean
# The first rule is the default, ie. "make",
# "make all" and "make parking" mean the same
all: parking_static
clean:
$(RM) $(OBJECTS) $(DEPENDS) parking_static
# Linking the executable from the object files
parking_static: $(OBJECTS)
$(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) $^ -o $@ $(LIBS)
-include $(DEPENDS)
$(OBJDIR):
mkdir -p $(OBJDIR)
$(OBJDIR)/%.o: $(SOURCEDIR)/%.cpp Makefile $(OBJDIR)
$(CXX) $(WARNING) $(CXXFLAGS) $(INC_PATH) -MMD -MP -c $< -o $@
Makefile
应该是正确的,因为它在没有标志的情况下编译--static
。但是,当它存在时,我收到错误:
ld: library not found for -lAccelerate.framework
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [parking_static] Error 1
如何将 OpenCV 库静态链接到我的项目?
解决方案
推荐阅读
- c# - 点表示法替代方案
- spring-boot - Spring Security - 如何在非安全和安全页面中获取经过身份验证的对象?
- python - 在 Python 中使用字典查找字谜
- python - flask/python 创建多个 TestCase 类返回 404
- python - 在 Python 中创建多级字典词性标注器
- c++ - C++ gcc`floorf`不是`std`的成员?
- django - 安装 SSL 后 Ubuntu 18.04 上的 Django 站点与 Apache2 无法正常工作
- ios - URLSession.dataTask(with:completionHandler:) 是否总是只调用一次completionHandler?
- c# - 从右向左移动时Unity 2D敌人移动脚本不翻转
- php - PHPspreadsheet 仅在 xlsx 时保存“Sheet1”,但在 xls 时可以