linux– 用于创建共享库的符号链接的Bash脚本

linux– 用于创建共享库的符号链接的Bash脚本,第1张

概述我认为这个问题对于shell脚本怪物来说相当容易.我正在寻找通过bash shell脚本创建Unix共享库的符号链接的最优雅和最短的方法.我需要的是从一个共享库文件列表开始,如“libmythings.so.1.1,libotherthings.so.5.11”,获取创建的符号链接,如:libmythings.so -> libmythings.so.

我认为这个问题对于shell脚本怪物来说相当容易.

我正在寻找通过bash shell脚本创建Unix共享库的符号链接的最优雅和最短的方法.

我需要的是从一个共享库文件列表开始,如“libmythings.so.1.1,libotherthings.so.5.11”,获取创建的符号链接,如:

libmythings.so -> libmythings.so.1 -> libmythings.so.1.1libotherthings.so -> libotherthings.so.5 -> libotherthings.so.5.11

库文件位于包含其他文件(如其他shell脚本)的目录中.

编辑:嗯,“ldconfig -nN.”可以正常工作,但是我还需要在“.so”后面没有附加主要编号的链接,至少有一个库,因为一个或多个库是来自Java的JNI调用的入口点,所以当一个库通过System.loadlibrary(“libraryname”)实例化它需要一个名为“libraryname.so”的库,而不是“libraryname.so.X”.

如果有一个Java部件的解决方法,只有ldconfig -nN的解决方案可以工作.

最佳答案
for baselib in "$@"do     shortlib=$baselib     while extn=$(echo $shortlib | sed 's/\.[0-9][0-9]*$//')           [ -n "$extn" ]     do         shortlib=$(basename $shortlib $extn)         ln -s $baselib $shortlib     donedone

我被骗了 – 所有的链接都去了基础库(libmythings.so.1.1);如果你真的想要连锁,那么你需要:

for baselib in "$@"do     shortlib=$baselib     while extn=$(echo $shortlib | sed 's/\.[0-9][0-9]*$//')           [ -n "$extn" ]     do         shorterlib=$(basename $shortlib $extn)         ln -s $shortlib $shorterlib         shortlib=$shorterlib     donedone           

当心 – 未经测试的代码.

傲慢在克星之前.

评论到达,上面的代码不起作用 – 评论是正确的.具有原位测试的固定版本是:

set -- libname.so.5.1.1for baselib in "$@"do    shortlib=$baselib    while extn=$(echo $shortlib | sed -n '/\.[0-9][0-9]*$/s/.*\(\.[0-9][0-9]*\)$//p')          [ -n "$extn" ]    do        shortlib=$(basename $shortlib $extn)        echo ln -s $baselib $shortlib    donedone

更改位于sed命令中.此版本默认情况下不打印任何内容(-n),仅匹配以点后跟数字结尾的行,然后删除除该后缀之外的所有内容,并打印剩余的赋值给extn.修改后,脚本会生成以下输出.删除echo以使其执行链接命令.

ln -s libname.so.5.1.1 libname.so.5.1ln -s libname.so.5.1.1 libname.so.5ln -s libname.so.5.1.1 libname.so

该脚本说明了关于shell脚本的一个有趣且经常被忽略的观点:一段时间的条件块中的 *** 作序列不必是单个命令.具有编辑 *** 作的行的状态不会影响整个测试是否成功;最后一个命令的退出状态'[ – n“$extn”]’控制循环是否继续. 总结

以上是内存溢出为你收集整理的linux – 用于创建共享库的符号链接的Bash脚本全部内容,希望文章能够帮你解决linux – 用于创建共享库的符号链接的Bash脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存