我写了一个迷你客户端服务器游戏,在我的电脑上运行正常(运行linux),因为我在客户端和服务器上安装了SFML(和GCC 4.8)。现在我想将服务器应用程序部署到另一个没有SFML的Linux。如何将SFML游戏服务器部署到Linux服务器?
首先,我试图动态链接使用的SFML库(网络和系统):
g++ server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network -lsfml-system
但是当我运行的服务器应用程序,它说,它无法找到SFML-network.so.2和sfml- system.so.2,即使这两个文件位于二进制文件的同一文件夹中。
我那么静态链接这两个库:
g++ -DSFML_STATIC server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network-s -lsfml-system-s
,然后当我运行它说,它无法找到GLIBC_2.15和GLIBC_2.17
最后在我的最后一次尝试我静态链接都libstC++和libgcc中:
g++ -DSFML_STATIC server.cpp -o ServerLinux -std=c++11 -Os -lsfml-network-s -lsfml-system-s -static-libstdc++ -static-libgcc
但我仍然得到同样的错误(找不到GLIBC_2.15和GLIBC_2.17)。
阅读类似的问题,似乎永远不应该静态链接glibc。但我不知道如何继续,我怎样才能将我的迷你游戏服务器部署到没有SFML的Linux机器上?
谢谢,我设法用你的见解进行静态编译! - 静态做到了这一招! (它给出了关于仍然使用共享库的getaddr内核函数的警告,但它在部署的服务器上完美运行) –