- Home /
Unity Master Server - Ubuntu build problem
HI!
have any of you encountered an error during building master server on ubuntu linux? I installed newest g++. Building process throws an error after a while. Here is whole output from terminal:
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER Common/Log.cpp -o Common/Log.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER Common/Utility.cpp -o Common/Utility.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/RakNetworkFactory.cpp -o RakNet/Sources/RakNetworkFactory.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/BitStream.cpp -o RakNet/Sources/BitStream.o
RakNet/Sources/BitStream.cpp: In member function ‘void RakNet::BitStream::PrintBits() const’:
RakNet/Sources/BitStream.cpp:785:25: warning: format not a string literal and no format arguments [-Wformat-security]
RakNet/Sources/BitStream.cpp: In member function ‘void RakNet::BitStream::PrintHex() const’:
RakNet/Sources/BitStream.cpp:799:25: warning: format not a string literal and no format arguments [-Wformat-security]
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/GetTime.cpp -o RakNet/Sources/GetTime.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/RakPeer.cpp -o RakNet/Sources/RakPeer.o
RakNet/Sources/RakPeer.cpp:160:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘255’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘255’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘254’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘254’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘254’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘254’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘253’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘253’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘253’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp:162:127: warning: narrowing conversion of ‘253’ from ‘int’ to ‘const char’ inside { } is ill-formed in C++11 [-Wnarrowing]
RakNet/Sources/RakPeer.cpp: In member function ‘virtual bool RakPeer::RPC(const char*, const char*, BitSize_t, PacketPriority, PacketReliability, char, AddressOrGUID, bool, RakNetTime*, NetworkID, RakNet::BitStream*, unsigned char, SystemAddress)’:
RakNet/Sources/RakPeer.cpp:1800:6: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wparentheses]
RakNet/Sources/RakPeer.cpp: In member function ‘RakPeer::RemoteSystemStruct* RakPeer::AssignSystemAddressToRemoteSystemList(SystemAddress, RakPeer::RemoteSystemStruct::ConnectMode, RakNetSmartPtr<RakNetSocket>, bool*, SystemAddress, int, RakNetGUID, short unsigned int)’:
RakNet/Sources/RakPeer.cpp:4099:12: warning: unused variable ‘errorCode’ [-Wunused-variable]
RakNet/Sources/RakPeer.cpp: In member function ‘virtual char* RakPeer::HandleRPCPacket(const char*, int, SystemAddress)’:
RakNet/Sources/RakPeer.cpp:4437:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4447:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4459:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4467:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4485:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4493:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4503:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4511:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4520:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4530:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4539:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp:4581:51: warning: statement has no effect [-Wunused-value]
RakNet/Sources/RakPeer.cpp:4609:11: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RakNet/Sources/RakPeer.cpp: In function ‘bool ProcessOfflineNetworkPacket(SystemAddress, const char*, int, RakPeer*, RakNetSmartPtr<RakNetSocket>, bool*, RakNetTimeUS)’:
RakNet/Sources/RakPeer.cpp:5776:102: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
RakNet/Sources/RakPeer.cpp: In member function ‘bool RakPeer::RunUpdateCycle()’:
RakNet/Sources/RakPeer.cpp:6129:56: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/BitStream_NoTemplate.cpp -o RakNet/Sources/BitStream_NoTemplate.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/RakSleep.cpp -o RakNet/Sources/RakSleep.o
RakNet/Sources/RakSleep.cpp: In function ‘void RakSleep(unsigned int)’:
RakNet/Sources/RakSleep.cpp:29:6: warning: variable ‘rt’ set but not used [-Wunused-but-set-variable]
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/CheckSum.cpp -o RakNet/Sources/CheckSum.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/Rand.cpp -o RakNet/Sources/Rand.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/ReliabilityLayer.cpp -o RakNet/Sources/ReliabilityLayer.o
RakNet/Sources/ReliabilityLayer.cpp:199:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
In file included from RakNet/Sources/ReliabilityLayer.cpp:8:0:
RakNet/Sources/ReliabilityLayer.h: In constructor ‘BPSTracker::TimeAndValue2::TimeAndValue2(RakNetTimeUS, uint64_t)’:
RakNet/Sources/ReliabilityLayer.h:88:14: warning: ‘BPSTracker::TimeAndValue2::time’ will be initialized after [-Wreorder]
RakNet/Sources/ReliabilityLayer.h:87:12: warning: ‘uint64_t BPSTracker::TimeAndValue2::value1’ [-Wreorder]
RakNet/Sources/ReliabilityLayer.cpp:50:1: warning: when initialized here [-Wreorder]
RakNet/Sources/ReliabilityLayer.cpp: In member function ‘void ReliabilityLayer::Update(SOCKET, SystemAddress, int, CCTimeType, unsigned int, DataStructures::List<PluginInterface2*>&, RakNetRandom*, short unsigned int)’:
RakNet/Sources/ReliabilityLayer.cpp:1298:15: warning: variable ‘timeMs’ set but not used [-Wunused-but-set-variable]
RakNet/Sources/ReliabilityLayer.cpp: In member function ‘void ReliabilityLayer::SendBitStream(SOCKET, SystemAddress, RakNet::BitStream*, RakNetRandom*, short unsigned int, CCTimeType)’:
RakNet/Sources/ReliabilityLayer.cpp:1832:15: warning: variable ‘oldLength’ set but not used [-Wunused-but-set-variable]
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/LinuxStrings.cpp -o RakNet/Sources/LinuxStrings.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/ConsoleServer.cpp -o RakNet/Sources/ConsoleServer.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/Router.cpp -o RakNet/Sources/Router.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/DS_BytePool.cpp -o RakNet/Sources/DS_BytePool.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/MessageFilter.cpp -o RakNet/Sources/MessageFilter.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/SHA1.cpp -o RakNet/Sources/SHA1.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/DS_ByteQueue.cpp -o RakNet/Sources/DS_ByteQueue.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/SimpleMutex.cpp -o RakNet/Sources/SimpleMutex.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/DS_HuffmanEncodingTree.cpp -o RakNet/Sources/DS_HuffmanEncodingTree.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/NetworkIDManager.cpp -o RakNet/Sources/NetworkIDManager.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/SocketLayer.cpp -o RakNet/Sources/SocketLayer.o
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/DS_Table.cpp -o RakNet/Sources/DS_Table.o
RakNet/Sources/DS_Table.cpp: In member function ‘DataStructures::Table::ColumnType DataStructures::Table::Cell::EstimateColumnType() const’:
RakNet/Sources/DS_Table.cpp:210:5: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wparentheses]
g++ -c -Wall -I. -ICommon -DUNITY_MASTERSERVER RakNet/Sources/NetworkIDObject.cpp -o RakNet/Sources/NetworkIDObject.o
In file included from RakNet/Sources/NetworkIDManager.h:11:0,
from RakNet/Sources/NetworkIDObject.cpp:9:
RakNet/Sources/DS_BinarySearchTree.h: In instantiation of ‘void DataStructures::AVLBalancedBinarySearchTree<BinarySearchTreeType>::BalanceTree(typename DataStructures::BinarySearchTree<BinarySearchTreeType>::node*, bool) [with BinarySearchTreeType = NetworkIDNode; typename DataStructures::BinarySearchTree<BinarySearchTreeType>::node = DataStructures::BinarySearchTree<NetworkIDNode>::node]’:
RakNet/Sources/DS_BinarySearchTree.h:219:3: required from ‘void DataStructures::AVLBalancedBinarySearchTree<BinarySearchTreeType>::Del(const BinarySearchTreeType&) [with BinarySearchTreeType = NetworkIDNode]’
RakNet/Sources/NetworkIDObject.cpp:43:72: required from here
RakNet/Sources/DS_BinarySearchTree.h:169:5: error: ‘Height’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RakNet/Sources/DS_BinarySearchTree.h:169:5: note: declarations in dependent base ‘DataStructures::BinarySearchTree<NetworkIDNode>’ are not found by unqualified lookup
RakNet/Sources/DS_BinarySearchTree.h:169:5: note: use ‘this->Height’ instead
RakNet/Sources/DS_BinarySearchTree.h:174:5: error: ‘Height’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
RakNet/Sources/DS_BinarySearchTree.h:174:5: note: declarations in dependent base ‘DataStructures::BinarySearchTree<NetworkIDNode>’ are not found by unqualified lookup
RakNet/Sources/DS_BinarySearchTree.h:174:5: note: use ‘this->Height’ instead
make: *** [RakNet/Sources/NetworkIDObject.o] Error 1
Any suggestions? I haven't found anything like this on answers nor forum...
Answer by fjalla · Aug 20, 2014 at 02:02 PM
To put together everything I learned while compiling into one place:
(be sure to use the master server from http://unity3d.com/master-server)
MASTER SERVER
1: In RakNet/Sources/DS_BinarySearchTree.h
you need to add this->
in front of Height(
(notice the trailing space) on lines 169, 174, 229 & 238, like this:
line 169:
needs to be changed to:left_height = Height( current->left );
left_height = this->Height( current->left );
line 174:
needs to be changed to:right_height = Height( current->right );
right_height = this->Height( current->right );
line 229:
needs to be changed to:return Height( A->right ) > Height( A->left );
return this->Height( A->right ) > this->Height( A->left );
line 238:
needs to be changed to:return this->Height( A->left ) > this->Height( A->right );
return this->Height( A->left ) > this->Height( A->right );
2: Again, in RakNet/Sources/DS_BinarySearchTree.h
, you need to add this->
in front of FindParent(
(again, notice the trailing space) on lines 202, 275, 276, 339, 340, 833, 890 & 1109, like this:
line 202:
needs to be changed tocurrent = FindParent( *( current->item ) );
current = this->FindParent( *( current->item ) );
lines 275 & 276:
need to be changed to:B = FindParent( *( C->item ) ); A = FindParent( *( B->item ) );
B = this->FindParent( *( C->item ) ); A = this->FindParent( *( B->item ) );
lines 339 & 340:
need to be changed to:B = FindParent( *( C->item ) ); A = FindParent( *( B->item ) );
B = this->FindParent( *( C->item ) ); A = this->FindParent( *( B->item ) );
line 833:
needs to be changed to:parent = FindParent( *( current->item ) );
parent = this->FindParent( *( current->item ) );
line 890:
needs to be changed to:parent = FindParent( *( current->item ) );
parent = this->FindParent( *( current->item ) );
line 1109:
needs to be changed to:parent = FindParent( *( current->item ) );
parent = this->FindParent( *( current->item ) );
3: In MasterServer.cpp
, find:
#ifdef WIN32
#include <stdio.h>
#include <time.h>
#include <windows.h>
#else
#include <stdlib.h>
#endif
and change it to:
#ifdef WIN32
#include <stdio.h>
#include <time.h>
#include <windows.h>
#else
#include <stdlib.h>
#include <unistd.h>
#endif
4: Finally, in Makefile
, on line 6, change:
CFLAGS=-Wall -lpthread $(DEFINES)
to
CFLAGS=-Wall -pthread $(DEFINES)
You're done! Now just run make
, and wait.
Tu run the master server use: ./MasterServer [-d] [-p xxxxx] [-l path] [-e (0,1,2)] [-c xxxxx]
-p Listen port (1-65535)
-d Daemon mode, run in the background
-l Use given log file
-e Debug level (0=OnlyErrors, 1=Warnings, 2=Informational(default), 2=FullDebug)
-c Connection count
-s Statistics print delay (minutes)
If anyone could create a patch instead of this manual fixing, that would be great.
FACILITATOR
To make the Facilitator compile you will have to do similar steps as with the Master Server:
1: You don't have to repeat the MS (Master Server) steps 1 & 2, just copy the RakNet/Sources/DS_BinarySearchTree.h
file from the master server to the facilitator. Overwrite the file that already exists.
2: Almost the same as in MS step 3. Find and change:
#ifdef WIN32
#include <stdio.h>
#include <time.h>
#include <windows.h>
#else
#include <stdlib.h>
#include <time.h>
#endif
to:
#ifdef WIN32
#include <stdio.h>
#include <time.h>
#include <windows.h>
#else
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#endif
3: Repeat the MS step 4.
You're done! Now just run make
again, and wait.
errrr... I am currently at step 19 of this tutorial. And now i have to do what? Is this my only option? I feel so uncomfortable in the putty cmd.. don't even know how to open a file for editing. Isn't there another solution?
Well done! This solution still works with the current $$anonymous$$aster Server v 2.0.1f1 & Facilitator v 2.0.0! (golfclap)
Someone should definitely make a patch file for this.
Also, it's probably best if you use the following symbolic link setup:
cd ~/Unity3D/$$anonymous$$asterServer/
mv RakNet ..
ln -s ../RakNet RakNet
cd ~/Unity3D/Facilitator/
rm -f -r RakNet
ln -s ../RakNet RakNet
...This will avoid having to maintain two separate RakNet sources, as both $$anonymous$$asterServer and Facilitator will be referencing the same folder.
@$$anonymous$$ad$$anonymous$$enyo where do you even have a step 19? And to the simplier option: you can edit those files using a normal GUI program, you only need the cmd for compiling. Also see below.
@ElicreicOcean on it! At least I'll practice my patch skills. I might even create a GitHub repo, to simplify things.
Thank you so much for this which made it very easy for me to fix the issues. $$anonymous$$any thanks!
Answer by pracalic · Sep 30, 2013 at 09:36 PM
The same problem. NetwokIDObject.o not createdy by vps (ubuntu 12.04). I try change makefile, DS_BinarySearchTree and this is don't give any succes in compilation.,
Answer by GilCat · Oct 11, 2013 at 03:33 AM
Well it's easy just go to the file "RakNet/Sources/DS_BinarySearchTree.h" and add the "this->" in line 169 and line 174.
line 169 will be: left_height = this->Height( current->left );
line 174 will be: right_height = this->Height( current->right );
You might need to add in MasterServer.h: #ifndef WIN32 #include #endif So it can run in deamon mode.
Tu run the server use: ./MasterServer [-d] [-p xxxxx] [-l path] [-e (0,1,2)] [-c xxxxx]
"-p Listen port (1-65535)" "-d Daemon mode, run in the background" "-l Use given log file" "-e Debug level (0=OnlyErrors, 1=Warnings, 2=Informational(default), 2=FullDebug)" "-c Connection count" "-s Statistics print delay (minutes)"
Hope it helps because i was struggling with the same prob.
You answer is correct. Thanks. But I add "this->" to any FindParent. Example line 275 in DS_BinarySearchTree.h: B = this->FindParent( *( C->item ) );
And in $$anonymous$$akeFile i change line 6 to CFLAGS=-Wall -pthread $(DEFINES). (erease "l" before pthread)
Yes, i forgot to mention that you should pass -pthread ins$$anonymous$$d of -lpthread
Answer by FuzzyQuills · Aug 26, 2014 at 09:24 AM
Hi, do you know if I can just copy the DS_BinarySearchTree.h I just edited into the facillitatior folder too? or are they different? I seriously don't want to have to do that all over again...
Also, by saying "it will work with facillitator too," do you mean that I can also do the tag like in MasterServer.cpp?
Hi, welcome to Unity Answers!
Please do not create answers if you want to ask something. Please convert your answer to a comment.
As to your question, I've updated my answer. Also, I didn't say it will work, I said it should work.
Your answer
Follow this Question
Related Questions
Problem with update project on VPS 0 Answers
Unity Masterserver on Linux 2 Answers
Linux Master server 0 Answers
Render to 'RenderTexture' in 'Headless Mode' 0 Answers
Unity server on Amazon EC2 Ubuntu? 2 Answers