安装使用常见的C++开源库

本文介绍了数值计算库Eigen的安装及使用方法,并演示了如何通过CMake进行配置。此外,还介绍了符号计算库CLN与GiNaC的安装过程,以及内存测试工具Valgrind的安装与使用方法。最后,提供了Boost库的安装步骤。

安装使用数值计算库eigen

unzip Downloads/eigen-eigen-153789649718.zip -d eigen
cd eigen/eigen-eigen-153789649718
mkdir build 
cmake ..
make -j2
sudo make install

使用eigen库

#include <iostream>
#include "eigen3/Eigen/Dense"
using namespace std;
using Eigen::MatrixXd;
int main()
{
    MatrixXd m(2,2);
    m(0,0) = 3;
    m(1,0) = 2.5;
    m(0,1) = -1;
    m(1,1) = m(1,0)+m(0,1);
    cout<<m<<endl;
    return 0;
}

cmake_minimum_required(VERSION 3.10)
project(ex2)

set(CMAKE_CXX_STANDARD 11)
include_directories("/usr/local/include/eigen3")
add_executable(ex2 main.cpp)

安装符号计算库

wget https://www.ginac.de/CLN/cln-1.3.4.tar.bz2
tar xjvf CLN/cln-1.3.4.tar.bz2
cd cln-1.3.4
./configure 
nake -j2
sudo make install 
wget https://ginac.de/ginac-1.7.4.tar.bz2
tar xjvf ginac-1.7.4.tar.bz2
cd ginac-1.7.4
make -j2
sudo make install

内存测试vargrind

wget ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2
tar xjvf valgrind-3.13.0.tar.bz2
cd valgrind-3.13.0
./configure
make -j2
sudo make install 

测试代码:

#include<iostream>
using namespace std;
int main()
{
    int *a = new int[10];
    for(int i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    delete [] a;
}

编译测试:

clang++ -g -o t
valgrind --leak-check=yes ./t

输出如下:

==21901== Memcheck, a memory error detector                                                                                      
==21901== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.                                                        
==21901== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info                                                     
==21901== Command: ./t
==21901==
==21901== Conditional jump or move depends on uninitialised value(s)
==21901==    at 0x4F39A2B: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<ch
ar, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char
, long) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22)
==21901==    by 0x4F39C4C: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_i
terator<char, std::char_traits<char> >, std::ios_base&, char, long) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22)
==21901==    by 0x4F45CE9: std::ostream& std::ostream::_M_insert<long>(long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22)
==21901==    by 0x400849: main (test.cc:8)
==21901==
==21901== Use of uninitialised value of size 8

使用文档

安装boost

wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2
tar xjvf boost_1_67_0.tar.bz2
cd boost_1_67_0
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2 toolset=gcc
sudo ./b2 install



编译C++开源库通常涉及多个步骤,具体取决于的类型、目标平台以及构建工具的使用。以下是一个通用的流程,结合了常见开源库编译实践。 ### 获取源代码 大多数C++开源库托管在GitHub、GitLab等平台上。可以通过`git clone`命令获取源代码。例如: ```bash git clone https://github.com/example/library.git ``` ### 配置构建环境 许多现代C++开源库使用CMake作为跨平台构建工具。进入源代码目录后,通常需要创建一个构建目录,并在其中运行CMake以生成适用于特定编译器的构建文件。 ```bash cd library mkdir build cd build cmake .. ``` ### 编译 根据生成的构建文件,可以使用相应的编译命令进行编译。对于CMake生成的Makefile,可以使用`make`命令;对于Visual Studio项目,则可以打开`.sln`文件进行编译。 ```bash make ``` ### 安装 编译完成后,可以将文件安装到系统目录中,以便其他项目可以方便地使用它。通常使用`make install`命令完成安装。 ```bash sudo make install ``` ### 特定的编译示例 - libcurl libcurl是一个广泛使用C++网络传输使用CMake工具可以手动生成Visual Studio工程文件,从而轻松编译出libcurl。具体步骤包括下载源代码、配置CMake选项(如SSL支持)、生成工程文件以及编译[^2]。 ### 特定的编译示例 - Boost Boost是一组为C++标准提供扩展的程序。对于Boost,可以下载预编译的文件,也可以从源代码编译。Boost提供了详细的编译指南,包括使用`bootstrap.sh`脚本初始化构建环境,以及使用`b2`命令进行编译[^3]。 ### 跨平台注意事项 在不同操作系统下编译C++开源库时,需要注意依赖项的差异。例如,在Linux上可能需要安装额外的开发包,而在Windows上可能需要手动配置某些依赖项的路径。 ### 常见问题解决 - **依赖问题**:确保所有依赖项都已正确安装。 - **编译错误**:查阅官方文档或社区论坛,寻找类似问题的解决方案。 - **配置问题**:使用CMake的GUI工具可以更直观地调整配置选项。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值