blob: ad2b4d34a01a75e56f6acf9e90f09526da74b367 [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
Mike Kruskaled5c57a2022-08-10 22:51:29 -070045If you would like to build protoc binary from source, see the [C++ Installation Instructions](src/README.md).
temporal40ee5512008-07-10 02:12:20 +000046
Feng Xiaod0e01142016-01-21 17:06:38 -080047Protobuf Runtime Installation
48-----------------------------
temporal40ee5512008-07-10 02:12:20 +000049
Feng Xiaod0e01142016-01-21 17:06:38 -080050Protobuf supports several different programming languages. For each programming
51language, you can find instructions in the corresponding source directory about
52how to install protobuf runtime for that specific language:
temporal40ee5512008-07-10 02:12:20 +000053
Joshua Haberman96ccf402021-05-20 10:06:36 -070054| Language | Source |
55|--------------------------------------|-------------------------------------------------------------|
56| C++ (include C++ runtime and protoc) | [src](src) |
57| Java | [java](java) |
58| Python | [python](python) |
59| Objective-C | [objectivec](objectivec) |
60| C# | [csharp](csharp) |
Joshua Haberman96ccf402021-05-20 10:06:36 -070061| Ruby | [ruby](ruby) |
62| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)|
63| PHP | [php](php) |
64| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) |
temporal40ee5512008-07-10 02:12:20 +000065
Feng Xiao74bf45f2017-09-08 15:44:09 -070066Quick Start
67-----------
temporal40ee5512008-07-10 02:12:20 +000068
Feng Xiao74bf45f2017-09-08 15:44:09 -070069The best way to learn how to use protobuf is to follow the tutorials in our
70developer guide:
71
72https://developers.google.com/protocol-buffers/docs/tutorials
73
74If you want to learn from code examples, take a look at the examples in the
75[examples](examples) directory.
76
77Documentation
78-------------
temporal40ee5512008-07-10 02:12:20 +000079
80The complete documentation for Protocol Buffers is available via the
81web at:
82
Marc Abramowitz86208c52017-02-18 13:05:19 -080083https://developers.google.com/protocol-buffers/
Protocol Buffers Docs1cb0d642022-07-17 13:16:59 +000084
85Developer Community
86-------------------
87
88To be alerted to upcoming changes in Protocol Buffers and connect with protobuf developers and users,
89[join the Google Group](https://groups.google.com/g/protobuf).
90