编译作品,开始不 - "standard path" ?

Compiling works, starting not - "standard path"?

本文关键字:standard path 开始 编译      更新时间:2023-10-16

我想在Ubuntu操作系统下使用SFML和C++。我用cmake创建了两个调试/发布共享库(通过本教程)

我可以编译和链接我的测试应用程序,而不需要提供任何关于路径的信息。所以我认为标准路径一切正常

g++-c main.cpp

g++main.o-o sfml应用程序-lsfml图形-lsfml窗口-lsfml系统

但当我现在开始我的应用程序时/sfml应用程序显示

/sfml应用程序:加载共享库时出错:libsfml graphics.so.2:无法打开共享对象文件:没有这样的文件或目录

这让我很困惑。因为我认为/usr/local/lib是标准路径,当我在编译时添加这个路径

g++main.o-o sfml app-L/usr/local/lib-lsfml图形-lsfml窗口-lsfml系统

它是有效的。但它也应该在不提供信息的情况下使用-L

那么问题出在哪里呢?我在重新安装Ubuntu之前已经做了这个。在我的旧系统上,它运行良好,可以通过启动我的应用程序。/终端,也可以双击。

当我添加控制台时

export LD_LIBRARY_PATH=$PATH:/usr/local/lib

我可以从控制台启动应用程序。但仅在特定的一个中。我希望应用程序也总是双击启动(不仅仅是从终端)。如何添加Libary"systemwide"?

您需要将/usr/local/lib添加到/etc/ld.so.conf.d/中的文件中,然后调用ldconfig来重建其缓存。

一种方法:

sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/usrlocal'
sudo ldconfig

那么您应该能够在没有-L /usr/local/lib的情况下编译,也可以使用export LD_LIBRARY_PATH=$PATH:/usr/local/lib