我正在尝试编译ttyd
这需要libwebsockets
在费多拉上。我的系统有一个过时的版本ttyd
,我需要一个较新的版本才能运行录像带工具。
这两个项目都使用 CMake,我能够编译并安装它们。
当我ttyd
从构建目录运行时,它工作正常。但是当我从其他地方运行时,我遇到了这个错误:
ttyd: error while loading shared libraries: libwebsockets.so.19: cannot open shared object file: No such file or directory
当我将构建目录添加到我的PATH
变量中时,我可以使用ttyd
它,vhs
但我希望正确安装ttyd
它才能正常工作。我做错了什么?
请注意,我已经安装了它们ttyd
,libwebsockets
但随后将其删除。
我可能可以关心共享库的符号链接,但这并不是问题的实际解决方案。如果我从源代码安装了这两个库,为什么共享库会丢失?
编辑:
我以相同的方式安装了这两个软件包:
mkdir build
cd build
cmake ..
make
sudo make install
共享库已安装在/usr/local/lib/
答案1
这里的问题是它/usr/local/lib
不包含在默认共享库搜索路径中。有三种方法可以解决这个问题:
LD_LIBRARY_PATH
运行前设置ttyd
:$ LD_LIBRARY_PATH=/usr/local/lib ttyd
更新默认库搜索路径:
# echo /usr/local/lib > /etc/ld.so.conf.d/local.conf # ldconfig
构建时将库路径编译到二进制文件中:
$ cmake -DCMAKE_INSTALL_RPATH=/usr/local/lib ..
上述三个选项中的任何一个都将允许ttyd
定位libwebsockets
共享库。