我希望有一个普通用户,没有 sudo
访问权限,编译并运行一个使用 libblas
和 liblapack
的程序,以及使用这些库的至少两个版本(ATLAS 和 OpenBLAS)执行此操作。使用 update-alternatives
我可以从一个版本切换到另一个版本,但我需要为此使用 sudo
。
有没有办法让我以普通用户的身份选择库?编译是在命令行中使用 -lblas -llapack
,也许我可以添加完整路径或其他内容?
最佳答案
Is there a way I could choose the libraries as a normal user?
是的。在这两个包上使用 dpkg -x
将它们提取到单独的目录中,例如
mkdir ~/ATLAS; cd ~/ATLAS; dpkg -x /path/to/atlas-package.deb
mkdir ~/OpenBLAS; cd ~/OpenBLAS; dpkg -x /path/to/openblas-package.deb
现在您可以链接您的程序以使用其中一个:
gcc main.o -o use-atlas -lblas -llapack -L $HOME/ATLAS/lib -Wl,-rpath=$HOME/ATLAS/lib
gcc main.o -o use-openblas -lblas -llapack -L $HOME/OpenBLAS/lib -Wl,-rpath=$HOME/OpenBLAS/lib
(如果库安装在 /lib/
以外的地方,您可能需要调整上面的命令。
关于ubuntu - 以普通用户身份选择替代库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282622/