我有一个共享对象,通过属性为init执行一些printf()
;很简单。它只是告诉我我设置的一些变量。
当我LD_PRELOAD=mylib.so ./program.sh -flags
program.sh
吐出由于printfs引起的错误时:
./program_run: line 16: cd: mylib.so: Startup
.: File name too long
./program_run: line 18: test: too many arguments
然后程序正常启动。在查看变量时,看起来bash脚本已被printf()
损坏。
有解决方法吗?
答案 0 :(得分:0)
尝试进行此更改:
export LD_PRELOAD=mylib.so ; ./program.sh -flags
你printf()是否使用变量参数?
答案 1 :(得分:0)
试试这个:
LD_PRELOAD=./mylib.so ./program.sh -flags
注意mylib.so前面的路径
我的经验是,使用完整路径更好,例如
LD_PRELOAD=/home/source/mylib/mylib.so ./program.sh -flags
如上所述,小心使用出口。
它可能会导致各种意外问题。