无论windows,linux

所有的库 ,dlib,opencv 通过cmake-gui 设置好静态库, 动态库,和其他各个选项

Tips:

cmake 优先级用cmake-gui,因为命令太多,容易敲错!!!!!

cmake 默认是制作动态库.so,

若需要制作静态库

1.BUILD_SHARED_LIBS 设置为OFF

cmake-gui 选择:

BUILD
=> BUILD_SHARED_LIBS 默认是勾选就是动态库(.dll/.so);不勾选就是静态库 (.lib/ .a), 还可以选择指令集,SSE2 ,SSE3 SSE4.1 SSE4.2 avx ,avx2 AVX512 ,NEON等

命令:

cmake -DBUILD_SHARED_LIBS=OFF ..

这里唠叨下,你生成的静态库,可以被静态库包装, 给EXE使用。

1.但是一定要确保都是静态库,

2.而且 【运行环境】也都是一样的, MT ,MD,区别是链接系统的库不一样。

静态库 可以选择MD,MT 其中的一种来链接系统库,但必须要统一!!!


需要注意的是构建 静态库 其中除了又很多IPP,JPEG,PNG, FFMPEG,等等等等,还有很多系统的依赖,

windows:

..\..\lib\Release\opencv_ts343.lib
..\..\lib\Release\opencv_world343.lib
..\..\3rdparty\lib\Release\ippiw.lib
..\..\3rdparty\ippicv\ippicv_win\lib\intel64\ippicvmt.lib
..\..\3rdparty\lib\Release\libprotobuf.lib
..\..\3rdparty\lib\Release\libjpeg-turbo.lib
..\..\3rdparty\lib\Release\libwebp.lib
..\..\3rdparty\lib\Release\libpng.lib
..\..\3rdparty\lib\Release\libtiff.lib
..\..\3rdparty\lib\Release\libjasper.lib
..\..\3rdparty\lib\Release\IlmImf.lib
..\..\3rdparty\lib\Release\zlib.lib
vfw32.lib
comctl32.lib
gdi32.lib
ole32.lib
setupapi.lib
ws2_32.lib
..\..\3rdparty\lib\Release\ittnotify.lib
kernel32.lib
user32.lib
winspool.lib
shell32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib

linux:

qt
等等,再添加

一般不知道要吐血,网上找的也特别不靠谱

https://docs.opencv.org/3.4.3/d3/d52/tutorial_windows_install.html

https://docs.opencv.org/3.4.3/dd/d6e/tutorial_windows_visual_studio_opencv.html

http://answers.opencv.org/questions/scope:all/sort:activity-desc/page:1/query:static build/

https://stackoverflow.com/questions/16830842/using-static-libraries-instead-of-dynamic-libraries-in-opencv

https://stackoverflow.com/questions/27491041/opencv-unresolved-external-symbol

http://answers.opencv.org/question/61345/unable-to-link-static-opencv/

https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix

https://stackoverflow.com/questions/13472294/opencv-243-using-static-libs-error-lnk2019

都是一知半解,

最终,我想到了用opencv sample , dlib example

1.cmake构建静态库,

2.设置编译选项

3.编译

之后,可以看到test,demo,sample ,example 的工程依赖, 所以静态库的那些依赖就可以找到了!!!!!!!!!!!!!!!!!

-windows:

测试通过OK

-linux:

todo



参考

https://stackoverflow.com/questions/27361314/why-the-opencvs-library-on-linux-is-libopencv-core-pch-dephelp-a-but-libopencv

****_pch-dephelp.a是预编译头,不是静态库

cd opencv
mkdir build
cd build cmake -DUSE_AVX_INSTRUCTIONS=1 -DUSE_AVX2_INSTRUCTIONS=1 -DBUILD_SHARED_LIBS=OFF ..
cmake --build . --config Release

有的说必须要以下这些东西?

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/opencv1 -DWITH_TBB=1 -DWITH_PNG=1 -DWITH_TIFF=1 -DWITH_JPEG=1 -DWITH_JASPER=1 -DBUILD_SHARED_LIBS=0

-llibjasper

-llibjpeg

-llibpng

-lIlmImf

-llibtiff

-ldl

-lz \

cmake opencv,dlib 编译静态库 1的更多相关文章

  1. android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)

    android ndk-build 编译静态库libxx.a 需求场景: 目前有安卓编码好的现在的openssl的两个.a,我们需要调用openssl的函数,并把功能再封装成.a; 这样使用时,在an ...

  2. opencv编译静态库时选择MD模式无效的原因

    在Cmake-gui上看到的明明是MD运行库依赖,生成MS项目时却变成了MT运行库依赖. 原因在于编译静态库时内部做了自动替换.

  3. 编译静态库的方式使用spdlog和fmt

    前言 spdlog++库,而且支持header only方式,但header only的使用方式会造成编译时长增加,所以这里简单描述一下,其编译静态库的方式. 又因为spdlog还依赖另一个开源库fm ...

  4. 【iOS】编译静态库

    与java和.net一样,objc也由类库的概念,不过在在objc上一般叫库,库表示程序代码集合,可以共享给其他程序使用,库是编译后的二进制文件,因此不能看到源代码,多用于一些开放sdk(如百度地图s ...

  5. 关于使用Visual编译静态库动态库及其使用的问题

    本文主要讲述了如何使用Visual Studio 2013 编译静态库和动态库,并使用. 一.静态库 1.  编写静态库 若要创建将引用并使用刚创建的静态库的应用程序,请从“文件”菜单中选择“新建”, ...

  6. 【转】TI DSP C6657学习之——编译静态库.lib

    熟悉C++开发的的小伙伴都知道,我们一般代码中往往要引入许多第三方编译好的库,有些是静态链接库static library, 有些是动态链接库dll.引入库的目的一是减少代码的编译时间,二是只提供函数 ...

  7. Makefile 编译静态库文件及链接静态库

    本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h  3 atexit.c Makefile  5 staticlib/lib/ staticlib ...

  8. Xcode 之自己编译静态库

    今天介绍下,如何利用Xcode,新建一个静态库,以及如何编译成i386.armv7.armv7s 等平台架构. 开发环境:MAC OS X 10.9.4 + Xcode 5.0.2 背景知识:库分两种 ...

  9. windows openssl-1.1.1 编译静态库和动态库

    一下为windows上安装过程 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/activeperl/ ...

随机推荐

  1. Django 视图之CBV

    CBV 所谓的CBV(class base view) 在视图里面,用类的方式来写逻辑 那么对于FBV,CBV有什么优势? CBV(class base views) 就是在视图里使用类处理请求. P ...

  2. SAP 定价

    近几天做门店团购销售订单上传SAP接口程序,SO创建测试过程中, 遇到定价问题,同事在定价过程的增强过不了. VOFM 了解到定价过程是个非常复杂的环节,此处出现程序处理过程中ZMP0定价条件下的价格 ...

  3. 【HTTP】HTPP学习笔记

    1.了解web及网络基础 HTTP的诞生 TCP/IP协议族 应用层 FTP文件传输协议 HTTP超文本传输协议 DNS域名系统:IP地址<--->域名 传输层 TCP传输控制协议 三次握 ...

  4. 使用基本 SQL 命令

    概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...

  5. linux多个分区合并为一个分区

    备份# rsync -avP -e ssh /data xxx卸载# umount /data /data?设置分区类型为8e# fdisk /dev/sdb 创建PV# pvcreate /dev/ ...

  6. 设置某个字段为null

    update 表名 set 字段名=null WHERE 条件如下例子 update dwtz set ggid=null WHERE name_of_invested_company='浙江海翔药业 ...

  7. ubuntu安装pip和python

    安装pip2sudo apt-get install pip 这样安装的是pip2不支持Python3.x,可以使用如下命令安装pip3 sudo apt-get install python3-pi ...

  8. 牛客小白月赛1 E 圆与三角形 【数学】

    题目链接 https://www.nowcoder.com/acm/contest/85/E 思路 在三角形中,这一串东西的值恒为1 又 SIN A 的最大值 为1 所以 这串式子的最大值 就是 r ...

  9. c++之默认参数的函数

    默认参数,看个例子就明白了 int add(int a=5,int b=6,z=3): int main(){ add():// 全部默认 add(1,5)://第三个参数默认 add(1,2,3): ...

  10. python cookbook 数据结构

    保留最后n个元素: from collections import deque def search (lines, pattern, history=): previous_lines = dequ ...