Ubuntu下自己编译安装和卸载软件(forward)

Ubuntu下自己编译安装和卸载软件

 

很多情况下,我们在使用ubuntu的时候都是在新立得软件包管理器中下载使用 软件的,好处是易于管理,方便更新,而且一般不会有很多的兼容性问题。但是问题是官方的软件源一般更新很慢,而且很多的软件根本就从来没有进入过官方的源 里面,这种情况下就需要自己下载源代码编译了。

其实自己编译软件一点都不难,只要你看一下源码包自带的readme 或者install 文件就可以搞定了,一般分为如下几个步骤,首先解压缩,然后进入解 压缩后的文件夹,sudo apt-get build-dep “软件名”,此步骤是为了下载编译环境所需要的一些文档和工具软件,只要网速良好,不一会ubuntu自己就下载安装好了,然后就是:

./configure
make
sudo make install

通过以上几个步骤就可以搞定绝大部分的软件编译问题,不同的也就是有时候需要使用一些配置参数 ,详情可以看源码包自带的readme或者install文件。

但是接下来问题就接踵而来了,因为如果我们发现这个软件并不是那么稳定好使,想要卸载它就难了 ,如果当时安装编译的源代码文件还在的话可以进入源代码目录,编译之后除了会生成install脚本 之外还会生成一个uninstall 脚本 ,因此我们使用

sudo make uninstall

就可以进行卸载了

 

另外一种方法是:安装一个生成deb 格式软件安装包的软件checkinstall ,装好后,在编译软件的最后一步使用

sudo make checkinstall

它就会提醒你一步一步安装软件,并在源码文件夹中生成一个deb格式的安装包,以后就可以使用它重新安装此软件,而不用麻烦的重新编译了。

说了半天还是没有谈到如何卸载软件,其实只要是最后一步使用checkinstall安装的软件,那么就可以完美的卸载了,如果你像我一样不喜欢命令行的话,就在新立得软件包管理器中找到它卸载就可以了。

最后再加一点题外话,就是如何保持ubuntu的真正清爽,经过大量的安装和卸载软件后,ubuntu和windows一样会留下大量的用不到的软件和配 置文件,如何清理呢,网上有一些安装额外的软件来清理的办法,我一般都试过,发现并没有让ubuntu减肥多少,还是用ubuntu自带的方法来的方便。

首先打开新立得软件包管理器,一般会在左边看到:

已安装
已安装(本地的或陈旧的)
未安装
未安装的(残存配置)
软件仓库里的新内容

现在选择未安装的(残存配置),如果没有这个选择那就证明你的系统并没有残存配置文件,把右面列表里不想保留的配置文件删除就可以了。

当你需要安装某个软件包时,新立得软件包管理器从/etc/apt/sources.list中所列的主机下载所需的文件,将它们保存到本机软件库 (/var/cache/apt/archives/),然后开始安装。本地软件库会不断膨胀占用大量硬盘空间,幸运的是,APT提供了工具来管理本地软 件库:apt-get的clean方法和 autoclean方法。

apt-get clean 将删除/var/cache/apt/archives目录和/var/cache/apt/archives/partial目录下锁文件以外的所有文件.。这样以来,当你需要再次安装某个软件包时,APT将重新下载它。

apt-get autoclean 仅删除那些不需要再次下载的文件。

使用时一定要记得在前面加上sudo

 

本文转载 于 http://hi.baidu.com/zj8la8la/blog/item/90a8002b53482221d42af114.html

zj3721cn 的 博客

 

<think>我们正在安装FFTW3库,根据引用内容,我们可以总结出以下步骤: 1. 安装依赖项(包括gcc9g++9) 2. 下载FFTW3.3.10源码 3. 配置编译选项 4. 编译安装 5. 验证安装 注意:引用[1]引用[4]都提到了安装步骤,其中引用[1]更详细。 具体步骤: 1. 安装依赖项:包括build-essential等,以及安装gcc9g++9(因为Ubuntu20.04默认可能不是gcc9,但FFTW3.3.10可以用gcc9编译) 2. 下载源码:可以使用wget下载 3. 解压源码包,进入目录 4. 运行configure脚本,设置安装路径(如/usr/local)需要的选项(如单精度支持--enable-float) 5. 使用make编译,然后make install安装 6. 验证安装:检查库文件头文件 根据引用[1]的步骤,我们写出命令: 步骤1:安装依赖项gcc9, g++9 ``` sudo apt update sudo apt install build-essential sudo apt install gcc-9 g++-9 ``` 步骤2:下载FFTW3.3.10源码 ``` wget http://www.fftw.org/fftw-3.3.10.tar.gz ``` 步骤3:解压并进入目录 ``` tar -xzvf fftw-3.3.10.tar.gz cd fftw-3.3.10 ``` 步骤4:配置编译选项(这里我们选择安装到/usr/local,并启用单精度浮点数支持) 注意:如果需要双精度(默认就是双精度),则不需要加`--enable-float`。这里我们同时安装单精度双精度,但通常需要分别编译两次(一次默认双精度,一次单精度)。所以,我们先编译双精度,然后重新配置编译单精度,最后再安装。但也可以只安装一种。根据引用[4]中的例子,他们只编译了单精度。但为了通用性,我们这里先演示双精度的安装,然后如果需要单精度再重复步骤(但注意安装路径相同,所以需要分别安装到不同目录或者使用不同的库名?实际上,FFTW在安装时会自动将单精度双精度库区分开,比如双精度库名为libfftw3,单精度为libfftw3f。所以我们可以分别编译安装,且都安装到同一个前缀下)。 因此,我们先安装双精度(默认): ``` sudo ./configure --prefix=/usr/local sudo make -j$(nproc) sudo make install ``` 然后,如果需要单精度,可以重新配置并编译安装单精度版本: ``` make clean sudo ./configure --prefix=/usr/local --enable-float sudo make -j$(nproc) sudo make install ``` 步骤5:验证安装 检查/usr/local/include下是否有fftw3.h,以及/usr/local/lib下是否有libfftw3libfftw3f。 另外,引用[2]提到如何查找库的位置,我们可以用: ``` ldconfig -p | grep fftw ``` 或者直接查看: ``` ls /usr/local/lib/libfftw3* ``` 注意:如果安装后运行程序时找不到库,可能需要更新动态库缓存: ``` sudo ldconfig ``` 以上步骤完成了FFTW3的安装。 但是,根据引用[1]的步骤,他们使用了gcc9,但我们的命令中并没有指定使用gcc9来编译。在Ubuntu20.04中,默认的gcc版本是9(因为20.04默认gcc9),所以直接使用./configure会使用系统默认的gcc。如果系统默认不是gcc9,我们可以通过设置环境变量来指定: 在运行configure之前,可以设置: ``` export CC=gcc-9 export CXX=g++-9 ``` 然后再运行configure。 因此,完整的安装命令(包括双精度单精度,并指定gcc9)可以写成: ``` # 安装依赖 sudo apt update sudo apt install build-essential gcc-9 g++-9 # 下载并解压 wget http://www.fftw.org/fftw-3.3.10.tar.gz tar -xzvf fftw-3.3.10.tar.gz cd fftw-3.3.10 # 设置使用gcc9 export CC=gcc-9 export CXX=g++-9 # 双精度 ./configure --prefix=/usr/local make -j$(nproc) sudo make install # 单精度 make clean ./configure --prefix=/usr/local --enable-float make -j$(nproc) sudo make install # 更新动态链接库缓存 sudo ldconfig ``` 注意:如果不需要单精度,可以跳过单精度的部分。 另外,引用[4]中提到了在安装lammps之前安装fftw,他们使用了`--prefix=/usr/local`,并且只编译了单精度(但他们的命令中只编译了单精度)。我们这里提供了双精度单精度的安装。 最后,我们可以通过编译一个简单的程序来验证,例如: ```c #include <fftw3.h> int main() { fftw_complex *in, *out; fftw_plan p; int N = 256; in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); fftw_destroy_plan(p); fftw_free(in); fftw_free(out); return 0; } ``` 保存为test_fftw.c,然后使用双精度库编译: ``` gcc test_fftw.c -o test_fftw -lfftw3 -lm ``` 如果没有报错,运行./test_fftw,虽然没有输出,但可以检查是否正常运行。 对于单精度,使用`-lfftw3f`: ``` gcc test_fftw.c -o test_fftwf -lfftw3f -lm ``` 这样,我们就完成了安装。 注意:如果安装过程中出现问题,请检查错误信息。常见问题可能是依赖项没有安装完全,或者权限问题(需要使用sudo)。 因此,用户的问题“Ubuntu 20.04 安装 FFTW3 库使用的命令”的答案就是上述步骤中的命令。 根据要求,我们需要生成相关问题: 1. 如何在Ubuntu中验证FFTW3库是否安装成功? 2. FFTW3安装后如何配置环境变量? 3. FFTW3支持哪些精度类型?如何同时安装多个精度版本? 注意:引用[3]中提到了将eigen3复制到/usr/include,但FFTW3我们安装到了/usr/local,通常不需要复制,因为编译器会自动搜索/usr/local/include/usr/local/lib。 另外,引用[5]是关于gromacs的安装,其中也提到了安装依赖,但我们这里不需要。 因此,我们按照上述步骤回答用户。</think>在 Ubuntu 20.04 上安装 FFTW3 库的完整步骤如下: ### 安装命令及步骤 1. **安装依赖项** ```bash sudo apt update sudo apt install build-essential ``` 2. **安装 GCC/G++ 9(可选但推荐)** ```bash sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 ``` 3. **下载 FFTW 3.3.10 源码** ```bash wget http://www.fftw.org/fftw-3.3.10.tar.gz tar -xzvf fftw-3.3.10.tar.gz cd fftw-3.3.10 ``` 4. **配置编译选项** - **双精度版(默认)**: ```bash ./configure --prefix=/usr/local --enable-shared ``` - **单精度版(可选)**: ```bash ./configure --prefix=/usr/local --enable-float --enable-shared ``` 5. **编译安装** ```bash make -j$(nproc) # 使用多核加速编译 sudo make install sudo ldconfig # 更新动态链接库缓存 ``` 6. **验证安装** ```bash ls /usr/local/include/fftw3.h # 检查头文件 ls /usr/local/lib/libfftw3*.so* # 检查库文件 ``` ### 关键说明 1. **安装路径**: 默认安装到 `/usr/local`,头文件在 `/usr/local/include`,库文件在 `/usr/local/lib`[^1][^2]。 2. **多精度支持**: - 双精度库:`libfftw3.so`(默认安装) - 单精度库:需添加 `--enable-float` 选项生成 `libfftw3f.so`[^1][^4]。 3. **环境配置**: 编译器会自动搜索 `/usr/local/lib`,若需手动指定: ```bash export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ``` 4. **编译测试程序**: ```bash gcc test.c -o test -lfftw3 -lm # 双精度 gcc test.c -o test -lfftw3f -lm # 单精度 ``` ### 常见问题解决 - **找不到头文件**: 确保 `/usr/local/include` 在编译器搜索路径中(GCC 默认包含)[^3]。 - **链接错误**: 运行 `sudo ldconfig` 更新库缓存,或检查 `LD_LIBRARY_PATH`[^2]。 - **卸载方法**: 进入源码目录执行: ```bash sudo make uninstall ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值