【问题标题】:Is there a way to create a symbolic link with an argument? (linux)有没有办法用参数创建符号链接? (Linux)
【发布时间】:2017-03-26 16:50:10
【问题描述】:

我想用一个调用它作为 ld.so 参数的快捷方式替换 python(符号链接): 例如

/home/user/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so /home/user/anaconda2/envs/tf_011g/bin/python2.7

而不是(默认)

/home/user/anaconda2/envs/tf_011g/bin/python2.7

注意事项:

  1. 我需要它作为链接而不是别名,因为我的 IDE 调试器 (pycharm) 显式调用了该链接。

  2. 它应该能够支持额外的命令行参数(如果存在)

仅仅使用ln -s 是行不通的,因为它不接受参数。 我尝试将其包装为 bash 脚本,但效果不佳(从命令行可以正常工作,但从 IDE 调试器调用时会出现 SegFault)

还有其他方法吗?

编辑(澄清): 这是我为 bash 脚本尝试的(从命令行可以正常工作,但从 IDE 调试器调用时会产生分段错误)

#!/bin/bash
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64:/usr/local/cuda-8.0/lib64/cuda/lib64:$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/usr/lib64/:$HOME/my_libc_env/usr/lib/"  $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so $HOME/anaconda2/envs/tf_011g/bin/python2.7 "${@}"

【问题讨论】:

  • 首先,你知道什么是符号链接吗?
  • 尝试使用exec... 即LD_LIB... exec $HOME/... 看看是否会有所不同。
  • @DietrichEpp,谢谢,它没有

标签: python linux bash shared-libraries symlink


【解决方案1】:

您可以通过设置环境变量LD_LIBRARY_PATH 的值来指定查找特定共享库的位置。该值是以冒号分隔的目录名称列表;在这种情况下,您需要预先添加一个特定目录,以便首先对其进行检查。

LD_LIBRARY_PATH=/home/user/my_libc_env/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH /home/user/anaconda2/envs/tf_011g/bin/python2.7

包装脚本使这更简单,无需记住库路径或 Python 可执行文件的路径。

#!/bin/bash
export LD_LIBRARY_PATH=/home/user/my_libc_env/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
/home/user/anaconda2/envs/tf_011g/bin/python2.7 "$@"

【讨论】:

  • 谢谢,但我在问题中写道,我已经尝试过这种方法,但没有奏效。 (我会澄清一下也尝试使用 LD_LIBRARY_PATH)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2011-06-02
  • 2013-03-31
  • 1970-01-01
相关资源
最近更新 更多