Ubuntu编译fftw3

文章目录

      • [1. 安装依赖项](#1. 安装依赖项)
      • [2. 安装 `gcc9` 和 `g++9`](#2. 安装 gcc9g++9)
      • [3. 下载 FFTW 3.3.10 源码](#3. 下载 FFTW 3.3.10 源码)
      • [4. 配置编译选项](#4. 配置编译选项)
      • [5. 编译和安装](#5. 编译和安装)
      • [6. 验证安装](#6. 验证安装)
      • [7. 相关配置(可选)](#7. 相关配置(可选))
      • [8. 编译使用 FFTW 的程序](#8. 编译使用 FFTW 的程序)

在 Ubuntu 20 上使用 gcc9g++9 编译 FFTW 3.3.10 需要以下几个步骤,包括安装依赖、下载源码、配置编译环境,并最终进行编译与安装。

1. 安装依赖项

首先,确保安装了 gcc9g++9 以及编译 FFTW 所需的工具和库。

bash 复制代码
sudo apt update
sudo apt install build-essential libtool autoconf pkg-config

2. 安装 gcc9g++9

Ubuntu 20 默认安装的 GCC 版本可能较低,因此需要手动安装 gcc9g++9

bash 复制代码
sudo apt install gcc-9 g++-9

你可以通过以下命令切换默认编译器为 gcc9g++9

bash 复制代码
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100

检查版本是否正确:

bash 复制代码
gcc --version
g++ --version

3. 下载 FFTW 3.3.10 源码

从 FFTW 官方网站或使用 wget 命令下载 FFTW 3.3.10 的源码:

bash 复制代码
wget http://www.fftw.org/fftw-3.3.10.tar.gz

解压缩下载的源码文件:

bash 复制代码
tar -xvzf fftw-3.3.10.tar.gz
cd fftw-3.3.10

4. 配置编译选项

为了确保使用 gcc9g++9 进行编译,配置编译环境:

bash 复制代码
CC=gcc-9 CXX=g++-9 ./configure --enable-shared --enable-threads --with-pic

选项说明:

  • --enable-shared:启用共享库(.so 文件)的构建。
  • --enable-threads:启用多线程支持。
  • --with-pic:在静态库中使用位置无关代码(Position Independent Code),以便与共享库一起工作。

5. 编译和安装

一旦配置完成,使用以下命令进行编译:

bash 复制代码
make -j$(nproc)

-j$(nproc) 参数会根据系统 CPU 核心数量并行编译,提高编译速度。

然后使用以下命令安装 FFTW:

bash 复制代码
sudo make install

6. 验证安装

编译和安装完成后,使用以下命令验证安装是否成功:

bash 复制代码
ldconfig -p | grep fftw

如果输出中有 FFTW 的共享库信息,则说明安装成功。你还可以通过运行 FFTW 提供的测试程序来验证安装:

bash 复制代码
make check

7. 相关配置(可选)

如果你希望 pkg-config 能找到 FFTW 库,可以将库路径添加到系统中:

bash 复制代码
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

这样,编译其他依赖 FFTW 的项目时,pkg-config 可以正确找到 FFTW 库。

8. 编译使用 FFTW 的程序

编译使用 FFTW 的程序时,确保链接到 FFTW 的库,通常可以通过以下方式进行编译:

bash 复制代码
gcc your_program.c -o your_program -lfftw3 -lm

-lfftw3 链接 FFTW 库,-lm 链接数学库。

相关推荐
mounter6258 分钟前
从内存隔离到运行时防线:透视 Linux 内核安全强化的博弈与演进
linux·网络·安全·linux kernel·kernel
yangshun_cug38 分钟前
Windows 11 的 WSL2 Ubuntu 22.04 安装 Seismic Unix 44R28 完整教程
windows·ubuntu·seismic unix
微道道1 小时前
Linux盒子局域网内使用 .local 域名访问,告别IP变化烦恼
linux·运维·服务器·hermes
Bug退散师2 小时前
多路IO复用[select版TCP服务器与poll版TCP服务器]与常用网络编程函数详解
linux·服务器·c语言·网络·驱动开发·tcp/ip
xiaoye-duck2 小时前
《Linux系统编程》Linux 系统多线程(一):线程概念(从虚拟地址空间与分页机制到优缺点解析)
linux·线程
国服第二切图仔2 小时前
05-构建与特性开关
linux·服务器·ubuntu
FREEDOM_X2 小时前
嵌入式——定时器工作原理
linux·c语言·单片机·嵌入式硬件·ubuntu
Thecozzy3 小时前
Skill和MCP和Subagent 的选择
linux·人工智能·ubuntu
硬核子牙4 小时前
代码展示大模型的智能
linux·chatgpt·agent
风曦Kisaki4 小时前
# Linux 系统资源查看命令总结(附命令快查表)
linux·运维·服务器