Linux系统创建可执行文件软链接
技术背景
由于创建软链接这个事情,在算法开发的日常中使用到的并不是很多,因此本文也是做一个简单的回顾。这里我们使用的案例是通过TMalign这个蛋白质打分文件,在编译好可执行文件之后,可以使用建立软链接的方法快捷的使用该可执行文件。
TMalign的下载与安装
TMalign可以给两个给定的蛋白质pdb文件进行评分:
$ TMalign out.pdb origin.pdb
*********************************************************************
* TM-align (Version 20220412): protein structure alignment *
* References: Y Zhang, J Skolnick. Nucl Acids Res 33, 2302-9 (2005) *
* Please email comments and suggestions to yangzhanglab@umich.edu *
*********************************************************************
Name of Chain_1: out.pdb (to be superimposed onto Chain_2)
Name of Chain_2: origin.pdb
Length of Chain_1: 207 residues
Length of Chain_2: 207 residues
Aligned length= 207, RMSD= 0.00, Seq_ID=n_identical/n_aligned= 1.000
TM-score= 1.00000 (if normalized by length of Chain_1, i.e., LN=207, d0=5.35)
TM-score= 1.00000 (if normalized by length of Chain_2, i.e., LN=207, d0=5.35)
那么如果要使用该评分软件,需要从该链接中下载相关的文件,比如cpp文件和readme文件。下载到本地目录下之后,可以执行如下指令进行编译(如果是Mac可能需要去掉static):
$ g++ -static -O3 -ffast-math -lm -o TMalign TMalign.cpp
编译之后就会在当前路径下生成一个名为TMalign的可执行文件:
$ ll
总用量 3036
drwxrwxr-x 2 dechin dechin 4096 5月 6 13:58 ./
drwxrwxr-x 11 dechin dechin 4096 5月 6 13:57 ../
-rw-rw-r-- 1 dechin dechin 7387 5月 6 13:58 readme.c++.txt
-rwxrwxr-x 1 dechin dechin 2904224 5月 6 13:59 TMalign*
-rw-rw-r-- 1 dechin dechin 182097 5月 6 13:57 TMalign.cpp
建立软链接
虽然这条指令很简单,但是需要注意的是一定要使用绝对路径,如果使用相对路径,会出现符号连接的层数过多的报错信息。另外如果要创建的软链接在/usr/bin之类的目录下的话,需要使用到sudo权限。具体执行指令如下:
$ sudo ln -s /home/dechin/tools/TMalign/TMalign /usr/bin/TMalign
一般/usr/bin是用户的系统路径,相比于不断的补充系统路径,这种建立软链接的方式会显得更加简洁。建立完软链接之后,就可以在系统的任一位置直接执行TMalign的指令了:
$ TMalign
*********************************************************************
* TM-align (Version 20220412): protein structure alignment *
* References: Y Zhang, J Skolnick. Nucl Acids Res 33, 2302-9 (2005) *
* Please email comments and suggestions to yangzhanglab@umich.edu *
*********************************************************************
Usage: TMalign PDB1.pdb PDB2.pdb [Options]
Options:
-u TM-score normalized by user assigned length (the same as -L)
warning: it should be >= minimum length of the two structures
otherwise, TM-score may be >1
-a TM-score normalized by the average length of two structures
T or F, (default F)
-i Start with an alignment specified in fasta file 'align.txt'
-I Stick to the alignment specified in 'align.txt'
-m Output TM-align rotation matrix
-d TM-score scaled by an assigned d0, e.g. 5 Angstroms
-o Output the superposition to 'TM_sup*'
$ TMalign PDB1.pdb PDB2.pdb -o TM_sup
View superposed C-alpha traces of aligned regions by RasMol or PyMOL:
$ rasmol -script TM_sup
$ pymol -d @TM_sup.pml
View superposed C-alpha traces of all regions:
$ rasmol -script TM_sup_all
$ pymol -d @TM_sup_all.pml
View superposed full-atom structures of aligned regions:
$ rasmol -script TM_sup_atm
$ pymol -d @TM_sup_atm.pml
View superposed full-atom structures of all regions:
$ rasmol -script TM_sup_all_atm
$ pymol -d @TM_sup_all_atm.pml
View superposed full-atom structures and ligands of all regions
$ rasmol -script TM_sup_all_atm_lig
$ pymol -d @TM_sup_all_atm_lig.pml
-fast Fast but slightly inaccurate alignment by fTM-align algorithm
-cp Alignment with circular permutation
-v Print the version of TM-align
-h Print the full help message, including additional options
(Options -u, -a, -d, -o will not change the final structure alignment)
Example usages:
TMalign PDB1.pdb PDB2.pdb
TMalign PDB1.pdb PDB2.pdb -u 100 -d 5.0
TMalign PDB1.pdb PDB2.pdb -a T -o PDB1.sup
TMalign PDB1.pdb PDB2.pdb -i align.txt
TMalign PDB1.pdb PDB2.pdb -m matrix.txt
TMalign PDB1.pdb PDB2.pdb -fast
TMalign PDB1.pdb PDB2.pdb -cp
总结概要
编译安装源代码为可执行文件时,有时候会遇到想把可执行文件放在特定的路径下的问题,比如放到/usr/bin目录下,这样可以全局可调用,又不需要手动添加各种乱七八糟的系统路径。这就需要使用到Linux中的软链接的功能,通常使用ln -s的指令即可。本文顺带介绍了蛋白质结构评分软件TMalign的源码下载和安装使用的基本方法,编译成一个可执行文件后,可以建立一个软链接,在系统各处都可以使用,是一个比较基础的操作。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/ln.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958
CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343
51CTO同步链接:https://blog.51cto.com/u_15561675
参考链接
Linux系统创建可执行文件软链接的更多相关文章
- useradd linux系统创建用户和设置密码简单脚本-1
useradd linux系统创建用户和设置密码简单脚本-1 linux_wangqiang 2019-12-04 20:51:18 65 收藏展开#!/bin/bash#快速创建用户 使用$1第一个 ...
- linux系统创建windows启动盘
平时工作中用到linux的操作命令较多,因此为了方便,就给电脑装了双系统,一般工作的时候,都选择进入linux系统.但是今天有件工作之外的事情需要解决下:创建一个windows启动盘.如果按照往常来说 ...
- AWS EC2实例Linux系统创建root用户并更改为root用户登录
对于刚创建AWS EC2实例,或者经常使用AWS 实例的小伙伴们来说,刚创建的EC2实例是没有ROOT权限的,因此不能直接使用ROOT用户去登陆实例,也无法获取到root权限.一般情况下,EC2实例默 ...
- linux 系统创建软连接
ln -s /data/var/ /usr/local/smokeping/var 需求:/var/本身在/usr/local/smokeping/var下,想要把/usr/local/smokepi ...
- Linux内核分析第六周学习笔记——分析Linux内核创建一个新进程的过程
Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...
- 第六周——分析Linux内核创建一个新进程的过程
"万子恵 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 &q ...
- 实验六:分析Linux内核创建一个新进程的过程
原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linu ...
- 作业六:分析Linux内核创建一个新进程的过程
分析Linux内核创建一个新进程的过程 进程描述符PCB----task_struct数据结构 操作系统:1.进程管理 2.内存管理 3 文件系统 一.新进程如何创建和修改task_struct数据结 ...
- Linux内核分析-分析Linux内核创建一个新进程的过程
作者:江军 ID:fuchen1994 实验题目:分析Linux内核创建一个新进程的过程 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/li ...
随机推荐
- 使用 JDBC 操作数据库时,如何提升读取数据的性能?如 何提升更新数据的性能?
要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的 setFetchSize() 方法指定每次抓取的记录数(典型的空间换时间策略):要提升更新数据的性能 可以使用 PreparedS ...
- 什么是memecache?redis 和 memecache 有什么区别?
什么是memecache? memcached是一套分布式的高速缓存系统,与redis相似.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性.为了 ...
- Spring 由哪些模块组成?
以下是 Spring 框架的基本模块:第 393 页 共 485 页 Core module Bean module Context module Expression Language module ...
- DRF(Django REST Framework)框架
目录 一.DRF中的Request 二.前戏: 关于面向对象的继承 三.初级版本 1. settings.py文件 -- 注册app 2. models.py文件 -- 创建表 3. admin.py ...
- 正则系列——JavaScript正则表达式入门心得
我发现有个别字符被这个编辑器给刷掉了,但是灰色区域显示正常,以灰色区域代码为准 什么玩意? 在我刚开始学习编程的时候,就听过正则了,也听说正则很牛逼,懂正则的更牛逼.但是苦于没有人指点,也没有使用正则 ...
- 微信小程序获取今天,昨天,后天
today 是需要计算的某一天的日期例如"2018-12-12",传 null 默认今天,addDayCount 是要推算的天数, -1是前一天,0是今天,1是后一天. onLoa ...
- 关于表达式&& 和 || 有多项的时候的取值
&& 表达式只有两项的时候,如果表达式为false, 返回为false 的那一个 ,为true的时候 返回最后一个值 || 只有两项的时候,返回为true 的那一个;都为fal ...
- 【.NET 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比较
前言 唠嗑一下.都在说去O或者开源,但是对于数据库选型来说,很多人却存在着误区.例如,去O,狭义上讲,是去Oracle数据库.但是从广义上来说,是去Oracle公司产品或者具有漂亮国垄断地位和需要商 ...
- vs技巧 - 调试asp.net core源码
学习asp.net core的方式除了看官方文档,看源码是也是一种很好的方式.本文介绍一种方法,简单配置vs,无需第三方插件就可以将asp.net core的源码链接自己的项目,随时穿梭于core的源 ...
- spring-bean依赖注入-03
set注入:set注入地址 通过构造方法进行注入 1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略) public class UserDaoImpl implements U ...