Kestrel 命令抛出无法加载 libuv。确保 libuv 已安装并可用 libuv.so.1

Kestrel command throws Unable to load libuv. Make sure libuv is installed and available as libuv.so.1

我正在尝试 运行 来自 https://github.com/aspnet/home

的样本

我按照 documentation 中的所有步骤操作,但我无法使其正常工作。

我是运行ning dnx . kestrel(在CentOS上),错误是:

System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1
  at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Load (System.String dllToLoad) [0x00000] in <filename unknown>:0
  at Microsoft.AspNet.Server.Kestrel.KestrelEngine..ctor (ILibraryManager libraryManager, IApplicationShutdown appShutdownService) [0x00000] in <filename unknown>:0
  at Kestrel.ServerFactory.Start (IServerInformation serverInformation, System.Func`2 application) [0x00000] in <filename unknown>:0
  at Microsoft.AspNet.Hosting.Internal.HostingEngine.Start () [0x00000] in <filename unknown>:0

我有 libuv.so.1.0.0 /usr/local/lib

[/usr/local/lib]$ ls
libuv.a  libuv.la  libuv.so  libuv.so.1  libuv.so.1.0.0  pkgconfig

而且我还在 /usr/lib/usr/lib64

中添加了 libuv.so.1 的符号链接

我什至检查了 kestrel's source code 但我找不到问题所在。

我错过了什么?

设置库加载器路径以包含您的本地库目录,Libuv.cs 中的 LoadLibrary 应该可以找到它:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
dnx . kestrel

man dlopen了解更多详情:

Linux Shared Library Search Path
From the dlopen(3) man page, the necessary shared libraries needed by the program are searched for in the following order:

1) A colon-separated list of directories in the user’s LD_LIBRARY_PATH environment variable.
2)....