在Ubuntu上安装OpenBLAS和Eigen

安装 openblas

直接使用 apt-get 命令即可安装:

shell 复制代码
sudo apt-get install libopenblas-dev

检查是否安装成功,可以用下面的示例代码 example.cpp

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>
#include "cblas.h"

int main() {
    const int n = 10;  // Array size
    const double da = 10; // Double constant
    double dx[n]; // Input double array
    double dy[n]; // Output double array

    // Initialize the arrays
    for (int i = 0; i < n; ++i) {
        dx[i] = 9 - i;
        dy[i] = i;
    }

    // Print the original dy array
    printf("Original dy: ");
    for (int i = 0; i < n; ++i) {
        printf("%f ", dy[i]);
    }
    printf("\n");

    // Perform daxpy operation: dy = da * dx + dy
    cblas_daxpy(n, da, dx, 1, dy, 1);

    // Print the modified dy array
    printf("Modified dy: ");
    for (int i = 0; i < n; ++i) {
        printf("%f ", dy[i]);
    }
    printf("\n");

    return 0;
}

编译并运行:

shell 复制代码
~$ gcc example.cpp -lopenblas -o example
~$ ./example
Original dy: 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 
Modified dy: 90.000000 81.000000 72.000000 63.000000 54.000000 45.000000 36.000000 27.000000 18.000000 9.000000

安装 Eigen

Eigen 官网:https://eigen.tuxfamily.org/index.php?title=Main_Page

在官网找一个源码下载,解压后安装:

shell 复制代码
~$ wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
~$ tar -zxvf eigen-3.4.0.tar.gz
~$ mkdir build
~$ cd build
~$ cmake ..
~$ sudo make install

eigen3会被默认安装到 /usr/local/include/eigen3 路径下,需要移动到 /usr/local/include 下面:

shell 复制代码
~$ sudo mv /usr/local/include/eigen3/* /usr/local/include/

然后把 /usr/local/include/eigen3 删除掉:

shell 复制代码
~$ sudo rm -rf /usr/local/include/eigen3

最后来跑一下官方示例 my_program.cpp

cpp 复制代码
#include <iostream>
#include <Eigen/Dense>

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);
    std::cout << m << std::endl;
}

编译运行:

shell 复制代码
~$ g++ my_program.cpp -o my_program
~$ ./my_program
  3  -1
2.5 1.5
相关推荐
智者知已应修善业6 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
Ujimatsu6 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
智者知已应修善业8 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
拾贰_C9 小时前
【Agent | openai | Streaming | 】流式输出Streaming
ubuntu·面试·prompt
徐某人..10 小时前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
无敌秋11 小时前
# C++ 简单工厂模式实战指南
c++·简单工厂模式
cany100011 小时前
C++ -- 模板的声明和定义
开发语言·c++
澈20711 小时前
深耕进阶 Day1:C 与 C++ 核心差异 + C++ 入门基石
c语言·开发语言·c++
刘延林.11 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu