我寫了一個迷你客戶端服務器遊戲,在我的電腦上運行正常(運行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內核函數的警告,但它在部署的服務器上完美運行) –