编译作品,开始不是“标准路径”? 我想在Ubuntu OS下使用C++实现SFML。我使用cmake创建了两个调试/发布共享库
我可以编译和链接我的测试应用程序,而不提供任何关于路径的信息。所以我认为标准路径的一切都是好的 g++-c main.cpp g++main.o-osfml应用程序-lsfml图形-lsfml窗口-lsfml系统 但是当我现在用./sfml应用程序启动我的应用程序时,它说 ./sfml应用程序:加载共享库时出错: libsfml graphics.so.2:无法打开共享对象文件:没有此类文件或 目录 这让我很困惑。因为我认为/usr/local/lib是标准路径,当我在编译过程中添加此路径时 g++main.o-osfml应用程序-L/usr/local/lib-lsfml图形 -lsfml窗口-lsfml系统 它起作用了。但它也应该在不使用-L提供信息的情况下工作 那么问题出在哪里呢?我在重新安装Ubuntu之前做过这个。在我的旧系统上,它运行良好,可以通过./terminal启动我的应用程序,还可以双击 当我在控制台中添加 导出LD_LIBRARY_PATH=$PATH:/usr/local/lib 我可以从控制台启动应用程序。但只有在具体的一个。我希望应用程序总是通过双击启动,而不仅仅是从终端启动。如何在系统范围内添加库?您需要将/usr/local/lib添加到/etc/ld.so.conf.d/中的文件中,然后调用ldconfig来重建其缓存 一种方法是:编译作品,开始不是“标准路径”? 我想在Ubuntu OS下使用C++实现SFML。我使用cmake创建了两个调试/发布共享库,c++,linux,ubuntu,g++,sfml,C++,Linux,Ubuntu,G++,Sfml,我可以编译和链接我的测试应用程序,而不提供任何关于路径的信息。所以我认为标准路径的一切都是好的 g++-c main.cpp g++main.o-osfml应用程序-lsfml图形-lsfml窗口-lsfml系统 但是当我现在用./sfml应用程序启动我的应用程序时,它说 ./sfml应用程序:加载共享库时出错: libsfml graphics.so.2:无法打开共享对象文件:没有此类文件或 目录 这让我很困惑。因为我认为/usr/local/lib是标准路径,当我在编译过程中添加此路径时 g
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/usrlocal'
sudo ldconfig
然后您应该能够在不使用-L/usr/local/lib的情况下编译,也不使用export-LD\u-LIBRARY\u-PATH=$PATH:/usr/local/lib。您需要将/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