ViennaRNA的安装使用

文章目录

安装最新版

可以在github链接找到最新版本,结下来我会以安装最新版,作为例子进行介绍

下载最新版:

bash 复制代码
https://github.com/ViennaRNA/ViennaRNA/releases/download/v2.6.4/ViennaRNA-2.6.4.tar.gz

解压并且安装(官网安装)

bash 复制代码
tar -zxvf ViennaRNA-2.6.4.tar.gz
cd ViennaRNA-2.6.4
./configure --prefix=/home/xxx/ViennaRNA-2.6.4
make install

报错并相关的解决方法:

存在perl的问题,利用conda 安装新的perl,不用系统自身的。

问题类似这个blog:blog

bash 复制代码
conda install -c conda-forge perl

编译的时候strings.h文件中的strdup函数声明冲突。

问题:

make[1]: Entering directory /home/xxxx/ViennaRNA-2.6.4/src/RNAxplorer' Making install in src make[2]: Entering directory /home/xxxx/ViennaRNA-2.6.4/src/RNAxplorer/src'

CC RNAxplorer_cmdl.o

CC RNAxplorer.o

In file included from /usr/include/string.h:633,

from RNAxplorer.c:3:

.../.../.../src/ViennaRNA/utils/strings.h:64:1: error: expected identifier or '(' before 'extension '

strdup(const char *s);

^~~~~~

make[2]: *** [RNAxplorer.o] Error 1

解释:

这个错误信息表明在编译ViennaRNA包的RNAxplorer部分时遇到了问题。错误是由于strings.h文件中的strdup函数声明冲突。在包含了系统的string.h头文件之后,strdup的声明与ViennaRNA包自己的strings.h中的声明发生了冲突。

这可能是因为strdup是一个标准的库函数,而在某些系统中,比如GNU libc,它是非标准的扩展,可能会被条件编译指令保护起来。

因此:
检查ViennaRNA的strings.h是否有条件编译指令来防止与标准库的strdup冲突。

复制代码
1。 找到strings.h文件的位置。如果您已经知道ViennaRNA的安装目录,您可以在其中搜索该文件。

2。 打开strings.h文件并查看文件内容。您可以使用文本编辑器打开它,例如:
vim /path/to/ViennaRNA/src/ViennaRNA/utils/strings.h

3。在文件中查找strdup相关的定义和声明。特别是寻找#ifdef或#ifndef预处理器指令,这些指令可能用来检查某个宏是否已定义,以决定是否需要声明strdup。例如:
#ifndef HAVE_STRDUP
char *
strdup(const char *s);
#endif
分析原因:
既然strings.h中的strdup函数是用条件编译宏#ifndef HAVE_STRDUP包围的,这意味着如果HAVE_STRDUP没有在编译前定义,ViennaRNA就会尝试自己声明strdup函数。这通常会导致和系统的string.h头文件中的声明冲突。

4。 解决办法:
添加编译选项:
如果您直接使用make来编译ViennaRNA,可以尝试在make命令中添加CFLAGS:
make CFLAGS='-DHAVE_STRDUP'
这会将HAVE_STRDUP定义传递给编译器。

找不到链接器(ld)找不到系统上的LAPACK库(-llapack)

1) 首先利用conda 安装

复制代码
conda install -c conda-forge liblapack

2)需要将包含LAPACK库的目录添加到您的LD_LIBRARY_PATH环境变量中

bash 复制代码
export LD_LIBRARY_PATH=/home/xxxx/condaenvs/xxxx/lib:$LD_LIBRARY_PATH

就是将下面两个文件放入LD_LIBRARY_PATH中:
原因:
liblapack.so 和 liblapack.so.3 是LAPACK库在Linux系统中的共享库文件。共享库(或动态链接库)是一种包含可以被其他程序调用的代码和数据的文件。在这种情况下,LAPACK库的功能被封装在这些共享库文件中,以便其他程序可以在运行时链接和使用它们。

在Linux系统中,共享库文件通常有以下几种类型:

.so 文件:这是一个"共享对象"(shared object)文件,它是在编译时用于动态链接的文件。
版本化的 .so 文件:例如 liblapack.so.3,这表示库的特定版本,确保软件链接到正确的库版本。这样可以防止软件更新后因为库版本不兼容而产生问题。
当链接器在编译过程中发出错误,提示找不到 -llapack 时,它通常是在寻找名为 liblapack.so 的文件。如果您已经有了这些文件,那么您可能需要确保它们位于链接器查找共享库的路径上,或者在编译时指定它们的位置。

如果这些文件不在标准的库路径下,您可以:

使用 -L 选项在编译时指定库的路径。
将库的路径添加到 LD_LIBRARY_PATH 环境变量中。
配置 /etc/ld.so.conf 或 /etc/ld.so.conf.d/ 中的文件,然后运行 ldconfig 来更新运行时链接器的配置。

但是好像还是会出现相同的错误当重新make install

bash 复制代码
ldconfig -p | grep lapack
如果运行 ldconfig -p | grep lapack 没有任何输出,说明 liblapack.so 没有在系统的链接器缓存中注册。这可能是因为:
1. LAPACK库没有安装在标准库路径:系统链接器可能只会自动扫描某些标准路径(如 /lib, /usr/lib, /usr/local/lib),如果LAPACK库不在这些路径中,链接器就不会自动找到它。
2. /etc/ld.so.conf 和 /etc/ld.so.conf.d/ 没有正确配置:这些文件控制了链接器应该扫描哪些路径。如果您将库安装在非标准路径,您需要将该路径添加到这些配置文件中,然后运行 sudo ldconfig 来更新链接器的缓存。

3. 运行 ldconfig 需要管理员权限:更新系统链接器缓存通常需要管理员权限。确保您使用 sudo ldconfig 来刷新缓存。
综上所有错误,提供的最终的解决措施

在使用 ./configure 脚本配置源代码包时,您可以通过设置环境变量 LDFLAGS 来指定链接器应该在哪里查找库文件。LDFLAGS 可以用来添加链接器的选项,-L 用于添加库的搜索路径,-Wl,-rpath 用于设置运行时的库搜索路径。

以下是如何在 ./configure 命令中指定库路径的步骤:

1。 设置 LDFLAGS:

bash 复制代码
LDFLAGS="-L/home/xxxx/condaenvs/xxxxx/lib -Wl,-rpath,/home/xxxx/condaenvs/xxxx/lib"

2。运行 ./configure:

bash 复制代码
./configure LDFLAGS="$LDFLAGS" --prefix=/home/xxxx/ViennaRNA-2.6.4

3。编译并安装:

bash 复制代码
make CFLAGS='-DHAVE_STRDUP'
make install

确保在运行 ./configure 命令之前,已经设置了 LDFLAGS 环境变量,并且包含了LAPACK库的正确路径。

successfully!!!

所有可执行文件都在:

/home/xxxx/ViennaRNA-2.6.4/bin

总结

一般需要编译的时候,可以先安装conda环境,安装gcc/g++,安装perl等重要信息.

相关推荐
重生之绝世牛码2 天前
Linux软件安装 —— Redis集群安装(三主三从)
大数据·linux·运维·数据库·redis·数据库开发·软件安装
重生之绝世牛码2 天前
Linux软件安装 —— Hadoop高可用安装(集成Zookeeper)
大数据·linux·运维·hadoop·zookeeper·软件安装·hadoop高可用
重生之绝世牛码2 天前
Linux软件安装 —— Flink集群安装(集成Zookeeper、Hadoop高可用)
大数据·linux·运维·hadoop·zookeeper·flink·软件安装
重生之绝世牛码3 天前
Linux软件安装 —— SSH免密登录
大数据·linux·运维·ssh·软件安装·免密登录
重生之绝世牛码3 天前
Linux软件安装 —— zookeeper集群安装
大数据·linux·运维·服务器·zookeeper·软件安装
重生之绝世牛码3 天前
Linux软件安装 —— kafka集群安装(SASL密码验证)
大数据·linux·运维·服务器·分布式·kafka·软件安装
白羽陌1 个月前
【软件安装】SketchUp(SU) 2025下载安装教程
3d建模·软件安装
Paper Clouds2 个月前
Labview安装报错 ni-systemlink-message-broker
labview·软件安装·软件需求·ni
x林星2 个月前
window本地部署overleaf
软件安装
中医正骨葛大夫2 个月前
一文解决如何在Pycharm中创建cuda深度学习环境?
pytorch·深度学习·pycharm·软件安装·cuda·anaconda·配置环境