首先,这里是错误消息:./Game: error while loading shared libraries: libEngine.so: cannot open shared object file: No such file or directory
编译时没有问题。
编译游戏时传递给GCC的库目录:-L../../bin -L.
目录树:
ENGINE
-bin
--Game (executable)
--libEngine.so
-Game
--src
---source code + Game makefile
-Engine
--src
---source code + shared library makefile
我可以根据需要提供更多信息。
设置LD_LIBRARY_PATH
是可能的,但通常不是最佳解决方案。特别是,对环境的依赖产生的程序对你有效,但对你的同事或教授无效(因为他们的环境不同(。
将-rpath=/path/to/bin
添加到连接线上消除了对环境的干扰。
更好的是:-rpath='$ORIGIN'
允许您将整个安装目录移动到不同的位置,并且程序仍然可以在自己的bin/
目录中找到其共享库。