在 CMakeList 中设置选项:set(CMAKE_EXE_LINKER_FLAGS "-static")

以下是 三种标准库链接方式的选项及区别

标准库连接方式 示例连接选项 优点 缺点
全静态 -static -pthread -lrt -ldl 不会发生应用程序在 不同 Linux 版本下的标准库不兼容问题。 生成的文件比较大,应用程序功能受限(不能调用动态库等)
全动态 -pthread -lrt -ldl 生成文件是三者中最小的 比较容易发生应用程序在  不同 Linux 版本下标准库依赖不兼容问题。
半静态 (libgcc,libstdc++) -static-libgcc -L. -pthread -lrt -ldl 灵活度大,能够针对不同的标准库采取不同的链接策略,从而避免不兼容问题发生。结合了全静态与全动态两种链接方式的优点。 比较难识别哪些库容易发生不兼容问题,目前只有依靠经验积累。某些功能会因选择的标准库版本而丧失。

实例如下:

cmake_minimum_required(VERSION 2.8)
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
project( labeling )
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
add_library(OpenCV STATIC IMPORTED)
add_library(CGAL STATIC IMPORTED COMPONENTS Core)
add_library(GMP STATIC IMPORTED)
find_package(OpenCV REQUIRED)
find_package(CGAL QUIET COMPONENTS Core )
find_library(GMP_LIBRARY gmp /usr/lib)include(src)
include( ${CGAL_USE_FILE} )
include( CGAL_CreateSingleSourceCGALProgram )set(EXECUTABLE_OUTPUT_PATH ../bin)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")include_directories( src )
include_directories( ${OpenCV_INCLUDE_DIRS} )file(GLOB_RECURSE nei_SRC "src/*.cpp")
add_executable( nei_segmentation ${nei_SRC})
target_link_libraries( nei_segmentation ${OpenCV_LIBS} ${GMP_LIBRARY})

cmake 静态编译 简介相关推荐

  1. windows下用cmake静态编译编译libevent-2.1.12,同时开启支持openssl

    之前一直用的是libevent 2.1.4的版本,今天想把libevent的版本更新一下,于是下了一个最新的libevent-2.1.12 因为把libevent用在我司的sdk里面,所以不希望把li ...

  2. cmake源码静态编译

    cmake源码静态编译 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 cmake源码静态编译 前言 1.cmake直接编译 ...

  3. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  4. ffmpeg 纯静态编译,以及添加自定义库流程摘要

    需求: 1. 纯静态编译ffmpeg ,即ldd ./ffmpeg 的结果是:not a dynamic executable 2.  修改ffmpeg 项目,添加自定义功能库 3. 自定义库由c++ ...

  5. SLAM静态编译中动态链接库问题

    0. 简介 作为ubuntu的使用者,最难过的事情就是环境的依赖和配置,其中最繁琐的就是各种动态链接库的配置.尤其是在跑ROS-SLAM等比较大的环境时候,我们会发现按照教程经常会出现安装了这个库但是 ...

  6. wxwidget编译安装_wxWidgets编译简介

    评论 # re: wxWidgets编译简介 2009-03-17 10:31 一灯 你好,向您请教个问题,关于wxWidget的, 我下载了wxWidget 2.8.9准备在wince下使用,但在w ...

  7. 易语言静态连接器提取_易语言静态编译链接器切换工具

    使用说明 将exe程序和"链接器目录配置.ini"文件,复制到易语言安装目录的"tools"文件夹下 并且对"链接器目录配置.ini"进行修 ...

  8. Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit

    文章目录 为什么要静态编译(static link) 1.源码下载/source code download 2. 编译工具下载/compiler download 编译环境选择:MinGW/MSVC ...

  9. Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

最新文章

  1. 2021年大数据Flink(十七):Flink四大基石
  2. 阿里飞天大数据飞天AI平台“双生”系统正式发布,9大全新数据产品集中亮相
  3. 75分钟入门微生物组数据分析和结果解读—刘永鑫(合肥,2021年6月23日)
  4. 人脸对齐--Robust face landmark estimation under occlusion
  5. MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子
  6. 设计模式之单例模式实践
  7. React使用antd Table生成层级多选组件
  8. java推荐系统算法,阿里“推荐系统”背后的算法介绍
  9. git rm -r --cached_【Git】工作中99%能用到的git命令
  10. kafka常用的操作命令
  11. VMware View虚拟桌面在安卓平板电脑上的演示
  12. jumpserver 0.4.0 安装使用
  13. HOOK技术原理与实现技术初探
  14. 运维工作的OKR愿景、战略和目标设计示例
  15. 3500元预算配置一台办公用台式计算机,配台式电脑机,预算3500左右,请问如何配置,各配件功能作用及大? 爱问知识人...
  16. php网页的制作,网页制作步骤是什么
  17. macbook黑屏_Mac Book电脑黑屏开不了机三种解决方法
  18. 聊天系统php源码,PHP聊天系统DuckCha 功能非常强大的在线聊天程序源码
  19. Python 用plt做动画
  20. JPEG压缩算法详解(转载)

热门文章

  1. ubuntu 12.04.1升级至ubuntu 12.10出现gcc-4.7依赖库错误的解决办法
  2. 高可用软件heartbeat服务章节目录(草稿)
  3. No such file or directory: Failed to enable the 'httpready' Accept Filter
  4. 基于 Kubernetes 的边缘云原生
  5. STM32使用DMA从串口读数据到内存
  6. NR 5G 用户平面协议
  7. 如何让自己的简历在万人从中一眼就能被HR选中
  8. 数值优化(Numerical Optimization)学习系列-文件夹
  9. 线程安全与可重入函数的区别及联系
  10. SpringMVC、MyBatis声明式事务管理