有没有办法用参数创建符号链接? (Linux)的

时间:2017-03-26 16:50:11

标签: python linux bash shared-libraries symlink

我想用一个将其称为ld.so参数的快捷方式替换python(符号链接): e.g。

/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. 如果存在

  3. ,它应该能够支持其他命令行参数

    仅使用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 "${@}"
    

1 个答案:

答案 0 :(得分:0)

您可以通过设置环境变量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 "$@"