linux编译boost库并执行程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言

    一、--prefix命令

    二、安装过程

    1、shell脚本:

    2、gcc编译环境 

    执行过程

    三、linux下执行cpp程序

    总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、--prefix命令

--prefix命令是什么意思

如果指定 --prefix

比如: --prefix=/usr/local/keepalived ,则此软件的所有文件都到 /usr/local/keepalived 目录下,很整齐。

二、安装过程

在linux上安装boost库

1、shell脚本:
#!/bin/bash
PREFIX_INC_PATH=$(cd "$(dirname "$0")";pwd)
tar xzvf boost-1.79.0.tar.gz
#git git地址
mv boost-1.79.0 boost
chmod -R 777 boost
cd boost
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2  cxxflags=-fPIC cflags=-fPIC toolset=gcc link=static
./b2 install --prefix=../boost_install/
cd ..
rm -rf ${PREFIX_INC_PATH}/../include ${PREFIX_INC_PATH}/../lib
mkdir -p ${PREFIX_INC_PATH}/../lib/linux
cp -rf boost_install/include ../
cp -f boost_install/lib/libboost_date_time.a ../lib/linux/
cp -f boost_install/lib/libboost_filesystem.a ../lib/linux/
cp -f boost_install/lib/libboost_log.a ../lib/linux/
cp -f boost_install/lib/libboost_regex.a ../lib/linux/
cp -f boost_install/lib/libboost_serialization.a ../lib/linux/
cp -f boost_install/lib/libboost_system.a ../lib/linux/
cp -f boost_install/lib/libboost_thread.a ../lib/linux/
cp -f boost_install/lib/libboost_iostreams.a ../lib/linux/
rm -rf boost_install
rm -rf boost
2、gcc编译环境 

gcc 8.2.0

执行过程

执行bash build.sh

因为安装时指定了路径./b2 install --prefix=../boost_install/

所以编译出的静态库都在../lib/linux/路径中。

三、linux下执行cpp程序

按照教程,编写cpp文件

#include <iostream>
#include <boost/bind.hpp>
#include <string>
using namespace std;
 
class Hello
{
public:
	void say(string name) 
	{ cout << name << " say: hello world!" << endl; }
};
 
int main()
{
	Hello h;
	auto func = boost::bind(&Hello::say, &h, "zhang san");
	func();
	return 0;
}

Linux编译安装boost库_linux编译boost-CSDN博客

按照上述教程,写好cpp程序,将test-boost.cpp文件导入linux环境

按照这个教程,执行编译程序指令

Linux下编译使用boost库 - 代码先锋网

按照他的教程执行g++ test-boost.cpp -o test -I /home/johnchen/boost_1_56_0/include -L /home/johnchen/boost_1_56_0/lib -l:libboost_system.a -l:libboost_filesystem.a指令,但是报错

/usr/local/bin/ld: cannot find -l:libboost_system.a
/usr/local/bin/ld: cannot find -l:libboost_filesystem.a
collect2: error: ld returned 1 exit status

百度这个报错,理解为执行器还是从/usr/local/bin/ld路径下寻找静态库了,

理解为没有正确链接景泰路,但是我的静态库文件在../lib/linux路径下,所以需要正确指定静态库路径,于是现在的问题就是怎么正确链接静态库,于是但是百度静态链接,百度关键词【linux gcc 链接静态库的几种方式】,找到这个教程,linux gcc 链接静态库的几种方式_yygr的博客-CSDN博客

文中说到

注意上面的说明中红框标注的内容,如果-l:filename格式指定一个文件名,连接程序直接去找这个文件名了,不会再像使用-lname时将name扩展成lib<name>.a格式的文件名.
所以使用 -l:libpng.a这样的形式来指定连接库,就指定了静态连接png库。
当然如果库的位置不在gcc默认搜索路径中,要用-L参数另外指定搜索库的路径,否则连接程序不知道该从哪里找到filename

-L/your/library/path -l:libmylib.a

将编译指令更改为

g++ test-boost.cpp -o test -L /root/data/lib/linux -l:libboost_system.a -l:libboost_filesystem.a

执行成功,路径下增加test*文件

执行文件./test

成功,到此,boost库安装成功并正确编译程序。OK!

四、linux/windows环境编译boost库

Boost库编译指南_boost 编译_Jelin大魔王的博客-CSDN博客


总结

boost库安装成功并正确编译程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/113059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS报错命名空间“std”中的“unary_function”

刚刚将我的 Xcode 升级到 15.0&#xff0c;突然它开始在 RCT_Folly 中出现以下错误 No template named unary_function in namespace std; did you mean __unary_function?我尝试删除缓存数据和派生数据并清理构建。也尝试删除 pod 和 node_modules。但没有任何帮助。 于是我…

深入理解udp

1.再谈端口号 1.1复习 我们上一篇谈了很久的应用层的http&#xff0c;并在此前我们使用socket编程写了一个能相互通信的客户端与服务端&#xff0c;但是我们也只是粗略的理解了一下tcp和udp在编程过程中所形成的差异性&#xff0c;并没有实质去了解一下其详细内容&#xff0c;…

Mybatis延迟加载(缓存)

延迟加载 分步查询的优点&#xff1a;可以实现延迟加载&#xff0c;但是必须在核心配置文件中设置全局配置信息&#xff1a;lazyLoadingEnabled&#xff1a;延迟加载的全局开关。当开启时&#xff0c;所有关联对象都会延迟加载 aggressiveLazyLoading&#xff1a;当开启时&…

基于【逻辑回归】的评分卡模型金融借贷风控项目实战

背景知识&#xff1a; 在银行借贷过程中&#xff0c;评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段。今天我们来复现一个评分A卡的模型。完整的模型开发所需流程包括&#xff1a;获取数据&#xff0c;数据清洗和特征工程&#xff0c;模型开发&#xff0c…

OPENCV 闭运算实验示例代码morphologyEx()函数

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string imAddr "c:/Users/actorsun/Pictures/";string imAddr1 imAddr"rice.png";Mat relax, positive;relax imread(imAddr1…

SPSS卡方检验

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

浅谈开口互感器在越南美的工业云系统中的应用

摘 要&#xff1a;分析低压开口式电流互感器的原理&#xff0c;结合工程实例分析开口电流互感器在低压配电系统中&#xff0c;主要是改造项目中的应用及施工细节&#xff0c;为用户快速实现智能配电提供解决方案&#xff0c;该方案具有成本低、投资少、安装接线简便等优点&…

自学SLAM(6)相机与图像实践:OpenCV处理图像与图像拼接(点云)

前言 如果写过SLAM14讲第一次的作业&#xff0c;或者看过我之前的运行ORB_SLAM2教程应该都安装过OpenCV了&#xff0c;如果没有安装&#xff0c;没关系&#xff0c;可以看我之前的博客&#xff0c;里面有如何安装OpenCV。 链接: 运行ORB-SLAM2&#xff08;含OpenCV的安装&…

234. 回文链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

跨境商城源码价格

在当今数字商务的时代&#xff0c;跨境电商已经成为了越来越多企业的选择。然而&#xff0c;要建立一个高效、便捷、全球化的跨境商城并不是一件简单的事情。所幸&#xff0c;现在有一个开源的解决方案&#xff0c;给企业提供了无限的可能性。跨境商城源码价格合乎实际&#xf…

html获取网络数据,列表展示 一

html获取网络数据&#xff0c;列表展示 js遍历json数组中的json对象 image.png || - 判断数据是否为空&#xff0c;为空就显示 - <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页列表</title></head><b…

Web渗透编程语言基础

Web渗透初学者JavaScript专栏汇总-CSDN博客 Web渗透Java初学者文章汇总-CSDN博客 一 Web渗透PHP语言基础 PHP 教程 | 菜鸟教程 (runoob.com) 一 PHP 语言的介绍 PHP是一种开源的服务器端脚本语言,它被广泛用于Web开发领域。PHP可以与HTML结合使用,创建动态网页。 PHP的特…

微信小程序-授权登录(手机号码)

1、WXBizDataCrypt.js-下载地址 2、UNIAPP代码 <template> <view class"work-container"> <view class"login"> <view class"content"> <button class"button_wx&q…

修复国产电脑麒麟系统开机出现initramfs 问题

目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏&#xff0c;重启后大概率就会进…

Java实现Hive UDF详细步骤 (Hive 3.x版本,IDEA开发)

这里写目录标题 前言1. 新建项目2.配置maven依赖3.编写代码4.打jar包5.上传服务器6.代码中引用 前言 老版本编写UDF时&#xff0c;需要继承 org.apache.hadoop.hive.ql.exec.UDF类&#xff0c;然后直接实现evaluate()方法即可。 由于公司hive版本比较高&#xff08;3.x&#x…

goquery库来编写爬虫程序

使用goquery库来编写一个爬虫程序&#xff0c;以下是代码&#xff1a; package main ​ import ("fmt""net/http""log""time""github.com/PuerkitoBio/goquery" ) ​ func main() {// 设置服务器dialer : &net.Dialer{…

day01_Java概述丶环境搭建

前置知识 什么是计算机语言&#xff1f; 计算机语言就是人与计算机之间进行信息交流沟通的一种特殊语言。所谓计算机编程语言&#xff0c;就是人们可以使用编程语言对计算机下达命令&#xff0c;让计算机完成人们需要的功能。 Java语言概述 是美国Sun公司&#xff08;Stanf…

LabVIEW对多个同一类型控件进行操作

LabVIEW对多个同一类型控件进行操作 有时候LabVIEW要多多个同一类的控件进行操作&#xff0c;如对tab中某个page中所有String控件设为dissable。就可以用如下的方式。className是获取不同类型的控件。通过类型选择&#xff0c;可以选择所有的String控件&#xff0c;并可对特定…

1. eulerAngles函数

对线性代数库Eigen3中eulerAngles函数的理解_qingtian11112的博客-CSDN博客作用&#xff1a; 将旋转矩阵转换为欧拉角 Vector3f ea mat.eulerAngles(2, 0, 2); // 等价于 mat AngleAxisf(ea[0], Vector3f::UnitZ())* AngleAxisf(ea[1], Vector3f::UnitX())* AngleAxisf(ea[…

高性能渲染——详解Html Canvas的优势与性能

本文由葡萄城技术团队原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 一、什么是Canvas 想必学习前端的同学们对Canvas 都不陌生&#xff0c;它是 HTML5 新增的“画布”元素&#x…