linux c 静态连接,Linux cmake 静态链接boost
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
背景
使用动态链接编译的二进制程序在执行时要求开发环境与生产环境严格一致,因此我们更倾向于使用静态链接的方式链接第三方库。本文介绍如何在Linux 环境下使用cmake 静态链接Boost 库。
示例
我们将编译好boost静态库.a 文件和头文件放入third_party 目录,在CMakeLists.txt 中使用find_package 方法查找boost静态库。
我自己在CentOS 6.6 编译的boost 1.63.0 静态库以及头文件 boost static library// 加入boost头文件路径
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_1_63_0/include)
// 设置boost使用静态链接
set(Boost_USE_STATIC_LIBS ON)
// 设置需要的boost 组件
set(BOOST_COMPONENTS date_time chrono filesystem iostreams program_options regex system thread unit_test_framework)
// 使用cmake find_package 查找boost库位置
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
// 编译的bin 文件链接boost 库
TARGET_LINK_LIBRARIES(your_bin_name ${Boost_LIBRARIES})
需要注意的是,仅在CMakeLists.txt 中这样设置的话cmake find_package 无法找到boost 静态库的位置。在cmake 前加入如下参数# 需要指定boost静态库的绝对路径
cmake -DBOOST_INCLUDEDIR=$(workspace)/third_party/boost_1_63_0/include
-DBOOST_LIBRARYDIR=$(workspace)/third_party/boost_1_63_0/lib ..
编译helloboost 程序静态链接boost库的完整示例如下。
helloboost.cpp/*************************************************************************
> File Name: helloboost.cpp
> Author: ce39906
> Mail: [email protected]
> Created Time: 2018-06-05 16:02:08
************************************************************************/
#include
#include
#include
// test boost split
#include
// include other boost header file you need.
int main()
{
std::string s("1;2;3;4");
std::vector<:string> v;
std::cout << "Before boost split, size of v is " << v.size() << std::endl;
boost::split(v, s, boost::is_any_of(";"));
std::cout << "After boost split, size of v is " << v.size() << std::endl;
return 0;
}
CmakeLists.txtcmake_minimum_required(VERSION 2.6)
project(helloboost C CXX)
SET(CMAKE_CXX_FLAGS "-g -w -O2")
#default binary and lib path
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR})
#begin to set boost static library
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/third_party/boost_1_63_0/include)
set(Boost_USE_STATIC_LIBS ON)
set(BOOST_COMPONENTS date_time chrono filesystem iostreams program_options regex system thread unit_test_framework)
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
ADD_EXECUTABLE(helloboost helloboost.cpp)
TARGET_LINK_LIBRARIES(helloboost ${Boost_LIBRARIES})
install.sh#!/bin/bash
workspace=$(pwd)
mkdir -p build
cd build
cmake -DBOOST_INCLUDEDIR=${workspace}/third_party/boost_1_63_0/include
-DBOOST_LIBRARYDIR=${workspace}/third_party/boost_1_63_0/lib ..
make
编译并执行./install.sh
./helloboost
执行结果如下
linux c 静态连接,Linux cmake 静态链接boost相关推荐
- windows连linux工具,Windows连接Linux工具
1.正常情况下都不会直接在Linux服务端进行操作,实际使用服务器和工作电脑不会在同一个地方,也不允许在服务器操作. 我这里用SecureCRT 7.0来连接服务器.提供个下载,带注册机工具: 安装完 ...
- java 连接linux失败,Jenkins连接Linux失败
源自:3-11 尝试连接 Jenkins连接Linux失败 启动方式没有launch slave agents via SSH选项. 错误如下:[05/16/19 21:13:50] [SSH] St ...
- 连接linux桌面命令,连接Linux远程桌面的四个方法
有下面四种方法: 一.通过xshell直接调用程序窗口. 二.通过xbrower连接Linux完整的桌面. 三.通过Linux连接Linux的远程桌面,可完整桌面,也可打开程序窗口. 四.通过VNC连 ...
- 【Linux】远程连接Linux系统及故障排查
参考资料: 1.视频课程<Linux运维> 2.书籍PDF版<Linux运维 Web集群实战> 远程连接Linux系统 原理 互联网上的计算机都会有一个32位的地址,ip地址. ...
- xmanager无法连接Linux服务器,xmanager连接linux出错问题怎么解决
当我们在使用xmanager连接linux的时候出错怎么办?对于xmanager连接linux出错问题怎么解决是不是很多小伙伴们都非常的好奇呢?那么下面我们就和爱站小编一起去看看吧. 用xmanage ...
- 远程linux云主机,Linux实验室 远程连接Linux云主机方法
在前面的一篇文章中我们知道了云主机是什么,如何申请和创建云主机以及连接Windows云主机实例的方法.今天,笔者再给大家唠一唠连接Linux云主机实例的方法. Linux介绍 Linux因为它开源.运 ...
- mysql linux err2003_远程连接linux下的mysql Err1045 Err2003解决办法
本人linux系统 Centos7 1.Err2003 我个人的情况是因为linux中防火墙开启并阻止了3306这个mysql端口的远程连接 解决办法: CentOS 7.0默认使用的是firewal ...
- Linux : Notepad++ 远程连接linux
1.美图 2.概述 菜鸟使用flashfxp遇到连接报错. [21:36:19] [R] 530 Permission denied. [21:36:19] [R] 连接失败 (连接已被客户端关闭) ...
- linux远程主机拒绝连接,linux – Telnet [无法连接到远程主机:拒绝连接]
我试图在Ubuntu和Guest OS(Kali)之间创建一个telnet连接.但是Ubuntu终端和Guest OS(Kali)终端中出现"无法连接到远程主机:连接被拒绝"的问题 ...
- 通过vnc自动连接linux,通过VNC连接Linux远程桌面
因为特殊的需求关系,琢磨了一下如何在本地连接远程Linux主机的桌面环境.翻了不少网上的相关文章,大部分都只讲了步骤没有说为什么这么做,我就简单再复述一遍吧,加深一下印象. 环境如下: 本地:OS X ...
最新文章
- Spring框架深入(四)--SpringMVC配置详解
- 造轮子-AgileConfig一个基于.NetCore开发的轻量级配置中心
- Python控制语句执行流程
- uni-app多端开发,问题总结
- 笔记本win7系统关闭触摸板功能的方法
- 观史图馆之《中东列国历代疆域变化 青铜与古典时代》
- 国际道教协会黄世真道长为《中华辟谷养生》题写序言!
- JavaEE Spring框架学习笔记(AOP Introductions介绍)
- Gprs通信协议服务器,GPRS协议简介
- 微信小程序实现生成海报并且保存本地
- PING用一生诠释了TCP/IP------二三层转发为PING劈荆斩棘(转载)
- [MySQL进阶]——索引的数据结构
- zk-snark之R1CS-QAP
- 全球与中国苯乙烯-异戊二烯嵌段共聚物市场现状及未来发展趋势
- MySQL设置白名单,允许单个IP或某段节点登录
- tf.constant用法
- CLion中回退和前进的快捷键
- 类Loopy是公共的, 应在名为 Loopy.java 的文件中声明
- 阿里巴巴开发者社区电子书藏经阁
- Python3-笔记-B-002-数据结构-字典dict{ }