问题
I\'m using Codeblocks as my IDE with MingGW. I\'m trying to use google protocol buffers, but I\'m having trouble building the protobuf.
The readme file for protobuf says:
If you are using Cygwin or MinGW, follow the Unix installation instructions, above.
The Unix instructions says:
To build and install the C++ Protocol Buffer runtime and the Protocol Buffer compiler (protoc) execute the following:
$ ./configure $ make $ make check $ make install
I don\'t know how to perform these in Windows because \"configure\" is a Unix script and I don\'t know how to execute it, or the rest of the commands.
Can someone explain in more detail how I can build protobuf using MinGW on Windows?
回答1:
Here's what worked for me:
You need to install MSYS with mingw. This is a minimal unix-like shell environment that lets you configure/make most unix packages. Read the mingw docs on how to install that (either with mingw-get or the GUI installer).
Once you have installed MSYS, you should have a shortcut in your start menu, named "MinGW Shell". That opens a console with a bash.
Extract the source tarball to your MSYS home directory. I have mingw installed in "D:\prog", so the directory was "D:\prog\MinGW\msys\1.0\home\<username>". You can tell your MSYS username from the shell prompt. When done, you should have a directory "D:\prog\MinGW\msys\1.0\home\<username>\protobuf-2.4.1".
At the shell prompt, change to the protobuf directory:
cd protobuf-2.4.1
Run the configure script (note the backquotes):
./configure --prefix=`cd /mingw; pwd -W`
The
--prefix
paramater makes sure protobuf is installed in the mingw directory tree instead of the MSYS directories, so you can build outside the MSYS shell (e.g. with CodeBlocks...)Run make:
make
Install:
make install
That's it. You should now be able to compile your project with protobuf.
You should be able to:- call
protoc
from your project/makefiles #include <google/protobuf/message.h>
etc.- link with
-lprotobuf
or-lprotobuf-lite
- call
HTH
Peter
Edit: Bringing this a bit more up to date. I tried setting up a new PC with current versions of MinGW and protobuf 2.5.0, and these are the problems I had:
There is no "MinGW Shell" shortcut in the start menu.
For some reason current MinGW installations fail to install that.
But there is amsys.bat
in<Mingw home>\msys\1.0
which brings up a console with a bash. Create a shortcut to that batch file somewhere.gcc does not work from the MSYS shell.
I had to run a post-installation batch file manually and answer the questions there. This sets up fstab entries that mount the mingw directories in the MSYS environment.
You need to run<Mingw home>\msys\1.0\postinstall\pi.bat
My Avira antivirus interfered with the protobuf compilation.
It complained about the generated protoc.exe being a "TR/Crypt.XPACK.Gen" trojan and blocked acces to that file, resulting in a corrupted build.
I got error messages saying something likeprotoc:./.libs/lt-protoc.c:233: FATAL: couldn't find protoc.
when trying to start protoc.
I had to disable the Avira realtime scanner andmake clean && make && make install
again
Edit #2:
This post has aged quite a bit, and mingw does not equal mingw anymore. In this day and age, I would rather recommend MSYS2 which comes with a port of ArchLinux's pacman package manager, a recent, better-working (c++11 std::thread support!) mingw fork for both 32 and 64 bit, and a protobuf package that you just need to install and be good.
Go here to download!
Hope this helps!
Peter
回答2:
In my case Peter's answer did not work completely, I used the latest MinGW 4.8.1 + the MSys distribution (selected both MSys packages in mingw-get
).
My problem was that the prefix didn't really work, I could only find the files in C:\MinGW\msys\1.0\local
. However, after copying the bin / include / libs folders to c:\mingw,
the installation worked for me, too.
回答3:
I had the same problem and i solved it by building protocol buffers using boost build. That worked fine, I can provide a jamfile for protocol buffers.
What I still have problems with though is to extend boost build so it generates cpp source files from proto files, but that is another story.
来源:https://stackoverflow.com/questions/9243816/how-to-build-googles-protobuf-in-windows-using-mingw