vir*_*tor 2 linux perl module shared-libraries
我正在尝试设置一个特定LD_LIBRARY_PATH的加载libpcap的修改版本而不是系统范围的.
当然,如果我运行整个脚本,这当然有效LD_LIBRARY_PATH=/blah ./script_name.我想让用户透明,所以我尝试了设置$ENV{'LD_LIBRARY_PATH'}.然而,这不会改变行为.我试图将它放在BEGIN块中以使其在其他use-s 之前工作,但也没有运气.
我怀疑这是因为ld在运行脚本的任何部分之前加载所有配置/在进程开始时配置自身.有没有办法让它发挥作用?
我想避免愚蠢的事情:
if (check_parent()) { $ENV...=.... ; `$0` ; exit }
Run Code Online (Sandbox Code Playgroud)
(或者已经建议的外包装 - 越少越好和随机包装,越好)
您可以用脚本替换脚本的顶部
#!/bin/sh
LD_LIBRARY_PATH="/blah:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
exec perl -x -S "$0" "$@" || exit 1
#!perl
# rest of your script
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |