Windows users ============= ## Download protobuf Windows binary from http://rglab.github.io/binaries/ ## Extract all the files to C:\protobuf. ## Set environment variables LIB_PROTOBUF to C:/protobuf ## Build protobuf from source (Only for RProtoBufLib package maintainers) #### build it with MSYS2 shipped with rtools4.0 1. Rtools (4.0) 2. open MSYS2 MINGW32 shell launcher(i.e. c:\rtools40\mingw32.exe) so that all the nix tools are available for building script 3. mkdir 32 && cd 32 && ../protobuf_src_folder/configure --prefix=./32/install && make install 4. open MSYS2 MINGW64 shell launcher(i.e. c:\rtools40\mingw64.exe) 5. build 64 bit lib similar to 3) #### build it with MYSYS1.0 + mingw 1. Rtools (3.x) 2. install MSYS-1.0.11 3. point it to the mingw_32(by mounting mingw_32 to /mingw in fstab file) installed by Rtools 4. open MYSYS terminal (so that all the nix tools are available for building script) 5. mkdir 32 && cd 32 && ../protobuf_src_folder/configure --prefix=./32/install && make install 6. mounting mingw_64 to /mingw in fstab file 7. build 64 bit lib similar to 5) ## cross-compiling protobuf It is now not working due to the incompatible exception model used by mingw on linux (sjlj) vs Rtools (dwarf). Unless manually build mingw from src with --disable-sjlj and --enable-dwarf 1. install cross-compiling tool chain on linux (and With mingw there are two different threading models: posix and win32. need to use posix e.g. update-alternatives --config x86_64-w64-mingw32-g++) 2. download the source 2. first install protobuf on local linux (so that 'protoc' command is available for cross compiling later on 3. the run configure script for win64: configure --host=x86_64-w64-mingw32 --prefix=/your_path/protobuf/x64 --enable-shared=no --with-protoc=protoc LDFLAGS='-static-libgcc' CXXFLAGS=-DHAVE_PTHREAD=1 4. then run make and make install 5. for win32: (need manually cp the .a file due to the error of target libprotoc configure --host=i686-w64-mingw32 --prefix=/your_path/protobuf/i386 --enable-shared=no --with-protoc=protoc LDFLAGS='-static-libgcc' CXXFLAGS=-DHAVE_PTHREAD=1