Difference between revisions of "Compiling libprotobuf"

From AlliedModders Wiki
Jump to: navigation, search
Line 33: Line 33:
 
For a debug build, replace <tt>./configure</tt> with:
 
For a debug build, replace <tt>./configure</tt> with:
 
<pre>
 
<pre>
./configure CXXFLAGS="-g3 -ggdb3"
+
./configure CFLAGS="-fvisibility=hidden" CXXFLAGS="-g3 -ggdb3"
 
</pre>
 
</pre>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
Line 47: Line 47:
 
tar -xvzf protobuf-2.5.0.tar.gz
 
tar -xvzf protobuf-2.5.0.tar.gz
 
cd protobuf-2.5.0
 
cd protobuf-2.5.0
./configure --build=i686-pc-linux-gnu CFLAGS="-m32 -DNDEBUG" CXXFLAGS="-m32 -DNDEBUG" LDFLAGS=-m32
+
./configure --build=i686-pc-linux-gnu CFLAGS="-m32 -DNDEBUG -fvisibility=hidden" CXXFLAGS="-m32 -DNDEBUG" LDFLAGS=-m32
 
make
 
make
 
</pre>
 
</pre>
Line 53: Line 53:
 
For a debug build, replace <tt>./configure</tt> with:
 
For a debug build, replace <tt>./configure</tt> with:
 
<pre>
 
<pre>
./configure --build=i686-pc-linux-gnu CFLAGS="-m32" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32
+
./configure --build=i686-pc-linux-gnu CFLAGS="-m32 -fvisibility=hidden" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32
 
</pre>
 
</pre>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
Line 73: Line 73:
 
For a debug build, replace <tt>./configure</tt> with:
 
For a debug build, replace <tt>./configure</tt> with:
 
<pre>
 
<pre>
./configure --build=x86-apple-darwin ABI=standard CFLAGS="-m32" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32
+
./configure --build=x86-apple-darwin ABI=standard CFLAGS="-m32 -fvisibility=hidden" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32
 
</pre>
 
</pre>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
 
This will also override protobuf's default CXXFLAGS of <tt>-DNDEBUG</tt>
  
 
The library will be in src/.libs/
 
The library will be in src/.libs/

Revision as of 07:37, 8 January 2016

Examples for compiling a 32-bit libprotobuf and other protobuf libraries using the protobuf-2.5.0 source.

For Dota 2, replace version 2.5.0 with 2.6.1.

Also note that the Protobuf source has moved to GitHub. Some of the below links may be outdated.

Windows

The following was tested on Windows 8.1 with Visual Studio 2013. Not all projects built after conversion, but only libprotobuf and dependencies were necessary.

  • Download protobuf-2.5.0.zip from https://code.google.com/p/protobuf/downloads/list
  • Extract and navigate to protobuf-2.5.0/vsprojects/
  • Open protobuf.sln in the version of Visual Studio corresponding with the VC abi version that you wish to compile for.
  • Walk through project conversion steps if necessary.
  • Right-click the libprotobuf project and choose properties.
  • In Configuration Properties > C/C++ -> Code Generation, set Runtime Library to /MT for Release or /MTd for Debug.
  • If building the Debug configuration, also add _ITERATOR_DEBUG_LEVEL=0 in Configuration Properties > C/C++ > Preprocessor > Preprocessor Defintions
  • Right-click the libprotobuf project and choose Build.

libprotobuf.lib will be in Release/ or Debug/, depending on build configuration.


Linux (32-bit host)

The following was tested on Debian 6 (Lenny) 32-bit.

wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
tar -xvzf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make

For a debug build, replace ./configure with:

./configure CFLAGS="-fvisibility=hidden" CXXFLAGS="-g3 -ggdb3"

This will also override protobuf's default CXXFLAGS of -DNDEBUG

The library will be in src/.libs/


Linux (64-bit host)

This hasn't been tested, but should work on most or all 64-bit distributions.

wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
tar -xvzf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --build=i686-pc-linux-gnu CFLAGS="-m32 -DNDEBUG -fvisibility=hidden" CXXFLAGS="-m32 -DNDEBUG" LDFLAGS=-m32
make

For a debug build, replace ./configure with:

./configure --build=i686-pc-linux-gnu CFLAGS="-m32 -fvisibility=hidden" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32

This will also override protobuf's default CXXFLAGS of -DNDEBUG

The library will be in src/.libs/


Mac

The following was tested on OS X 10.7 (Lion) and ensures that the outputted binaries are 32-bit.

wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
tar -xvzf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --build=x86-apple-darwin ABI=standard CFLAGS="-DNDEBUG -m32" CXXFLAGS="-m32 -DNDEBUG" LDFLAGS=-m32
make

For a debug build, replace ./configure with:

./configure --build=x86-apple-darwin ABI=standard CFLAGS="-m32 -fvisibility=hidden" CXXFLAGS="-m32 -g3 -ggdb3" LDFLAGS=-m32

This will also override protobuf's default CXXFLAGS of -DNDEBUG

The library will be in src/.libs/