blob: c2e6575f90efaef08b5675d470d139a7d7c6e597 [file] [log] [blame] [view]
temporal40ee5512008-07-10 02:12:20 +00001Protocol Buffers - Google's data interchange format
Feng Xiao17007a62014-08-28 14:39:49 -07002===================================================
3
temporal40ee5512008-07-10 02:12:20 +00004Copyright 2008 Google Inc.
Feng Xiao17007a62014-08-28 14:39:49 -07005
Feng Xiaoe9c00d92014-08-26 16:16:00 -07006https://developers.google.com/protocol-buffers/
temporal40ee5512008-07-10 02:12:20 +00007
Feng Xiaod0e01142016-01-21 17:06:38 -08008Overview
9--------
temporal40ee5512008-07-10 02:12:20 +000010
Feng Xiaod0e01142016-01-21 17:06:38 -080011Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,
12platform-neutral, extensible mechanism for serializing structured data. You
Sylvain Baubeaue5ec85e2016-01-25 21:41:31 +010013can find [protobuf's documentation on the Google Developers site](https://developers.google.com/protocol-buffers/).
Feng Xiao64d86522016-01-06 16:25:35 -080014
Feng Xiaod0e01142016-01-21 17:06:38 -080015This README file contains protobuf installation instructions. To install
16protobuf, you need to install the protocol compiler (used to compile .proto
17files) and the protobuf runtime for your chosen programming language.
Feng Xiao64d86522016-01-06 16:25:35 -080018
Feng Xiaod0e01142016-01-21 17:06:38 -080019Protocol Compiler Installation
20------------------------------
Feng Xiao64d86522016-01-06 16:25:35 -080021
Feng Xiaod0e01142016-01-21 17:06:38 -080022The protocol compiler is written in C++. If you are using C++, please follow
23the [C++ Installation Instructions](src/README.md) to install protoc along
24with the C++ runtime.
Feng Xiao64d86522016-01-06 16:25:35 -080025
Feng Xiaod0e01142016-01-21 17:06:38 -080026For non-C++ users, the simplest way to install the protocol compiler is to
27download a pre-built binary from our release page:
Feng Xiao64d86522016-01-06 16:25:35 -080028
Feng Xiaoafe98de2018-08-22 11:55:30 -070029 [https://github.com/protocolbuffers/protobuf/releases](https://github.com/protocolbuffers/protobuf/releases)
Feng Xiaode000522014-08-28 11:18:51 -070030
Feng Xiaod0e01142016-01-21 17:06:38 -080031In the downloads section of each release, you can find pre-built binaries in
32zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary
33as well as a set of standard .proto files distributed along with protobuf.
Feng Xiaode000522014-08-28 11:18:51 -070034
Feng Xiaod0e01142016-01-21 17:06:38 -080035If you are looking for an old version that is not available in the release
36page, check out the maven repo here:
Feng Xiaode000522014-08-28 11:18:51 -070037
Maxwell Paul Bricknerd07efba2017-06-23 09:25:03 -040038 [https://repo1.maven.org/maven2/com/google/protobuf/protoc/](https://repo1.maven.org/maven2/com/google/protobuf/protoc/)
Feng Xiaode000522014-08-28 11:18:51 -070039
Feng Xiaod0e01142016-01-21 17:06:38 -080040These pre-built binaries are only provided for released versions. If you want
noahdietz5abf8022022-04-12 10:25:08 -070041to use the github main version at HEAD, or you need to modify protobuf code,
Feng Xiaod0e01142016-01-21 17:06:38 -080042or you are using C++, it's recommended to build your own protoc binary from
43source.
temporal40ee5512008-07-10 02:12:20 +000044
Sylvain Baubeaue5ec85e2016-01-25 21:41:31 +010045If you would like to build protoc binary from source, see the [C++ Installation
Feng Xiaod0e01142016-01-21 17:06:38 -080046Instructions](src/README.md).
temporal40ee5512008-07-10 02:12:20 +000047
Feng Xiaod0e01142016-01-21 17:06:38 -080048Protobuf Runtime Installation
49-----------------------------
temporal40ee5512008-07-10 02:12:20 +000050
Feng Xiaod0e01142016-01-21 17:06:38 -080051Protobuf supports several different programming languages. For each programming
52language, you can find instructions in the corresponding source directory about
53how to install protobuf runtime for that specific language:
temporal40ee5512008-07-10 02:12:20 +000054
Joshua Haberman96ccf402021-05-20 10:06:36 -070055| Language | Source |
56|--------------------------------------|-------------------------------------------------------------|
57| C++ (include C++ runtime and protoc) | [src](src) |
58| Java | [java](java) |
59| Python | [python](python) |
60| Objective-C | [objectivec](objectivec) |
61| C# | [csharp](csharp) |
Joshua Haberman96ccf402021-05-20 10:06:36 -070062| Ruby | [ruby](ruby) |
63| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)|
64| PHP | [php](php) |
65| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) |
temporal40ee5512008-07-10 02:12:20 +000066
Feng Xiao74bf45f2017-09-08 15:44:09 -070067Quick Start
68-----------
temporal40ee5512008-07-10 02:12:20 +000069
Feng Xiao74bf45f2017-09-08 15:44:09 -070070The best way to learn how to use protobuf is to follow the tutorials in our
71developer guide:
72
73https://developers.google.com/protocol-buffers/docs/tutorials
74
75If you want to learn from code examples, take a look at the examples in the
76[examples](examples) directory.
77
78Documentation
79-------------
temporal40ee5512008-07-10 02:12:20 +000080
81The complete documentation for Protocol Buffers is available via the
82web at:
83
Marc Abramowitz86208c52017-02-18 13:05:19 -080084https://developers.google.com/protocol-buffers/