尝试在 Ubuntu 上部署 Qt 应用程序
从 Qt 站点展示如何通过改变 LD_LIBRARY_PATH 变量来加载库依赖项:
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname/Framework:$dirname/Libraries:{LD_LIBRARY_PATH}
export $LD_LIBRARY_PATH
$dirname/$appname "$@"
不幸的是,应用程序安装的目录(将出现在 PWD 中)有空格和特殊字符
/usr/share/My Company, Inc/ProductName/
查看如下资源:如何在 PATH 中出现包含空格的路径?我尝试改变
dirname="$PWD"/$dirname
或者甚至将其全部写出来(只是作为测试,因为库路径必须在任何目录中工作,而不仅仅是特定的目录)
dirname="/usr/share/My\ Company\,\ Inc/ProductName/"
和
LD_LIBRARY_PATH="$dirname"
它仍然说
./MyProgram.sh: 13: export: Company,: bad variable name
更改 export $LD_LIBRARY_PATH
为 会 export "$LD_LIBRARY_PATH"
导致新的错误:
13: export: /usr/share/My Company, Inc/ProductName/./Framework:/usr/share/My Company, Inc/ProductName/./Libraries:: bad variable name
这是一个不可能完成的任务吗?
我怎样才能使导出理解空格和逗号?
答案1
您应该导出变量,而不是它的值。
IE
export LD_LIBRARY_PATH
不是
export "$LD_LIBRARY_PATH"
编辑(示例):
$ LD_LIBRARY_PATH='/usr/share/My Company, Inc/ProductName'
$ export LD_LIBRARY_PATH
$ env | grep LD_
LD_LIBRARY_PATH=/usr/share/My Company, Inc/ProductName
$