{"id":16541117,"url":"https://github.com/spujadas/grpc-builds","last_synced_at":"2026-05-04T18:33:16.677Z","repository":{"id":69954487,"uuid":"312998450","full_name":"spujadas/grpc-builds","owner":"spujadas","description":"Binaries and development files for gRPC and Protobuf compilers, for Linux x64 and ARM (Raspberry Pi).","archived":false,"fork":false,"pushed_at":"2021-03-07T20:38:37.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T04:41:35.817Z","etag":null,"topics":["binaries","grpc","protobuf","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spujadas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-15T09:35:39.000Z","updated_at":"2021-03-07T20:38:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"f734ae8a-2cd2-4d76-864c-a76b4c3e4685","html_url":"https://github.com/spujadas/grpc-builds","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/spujadas/grpc-builds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spujadas%2Fgrpc-builds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spujadas%2Fgrpc-builds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spujadas%2Fgrpc-builds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spujadas%2Fgrpc-builds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spujadas","download_url":"https://codeload.github.com/spujadas/grpc-builds/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spujadas%2Fgrpc-builds/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32619650,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binaries","grpc","protobuf","raspberry-pi"],"created_at":"2024-10-11T18:54:08.069Z","updated_at":"2026-05-04T18:33:16.657Z","avatar_url":"https://github.com/spujadas.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gRPC builds\n\nThis repository provides packages containing binaries and development files for [gRPC](https://github.com/grpc/grpc) (an open source and high-performance RPC library and framework) and [Protobuf compilers](https://github.com/protocolbuffers/protobuf), for Linux x64 (`amd64`) and ARM (`armhf`) architectures. These packages are built from the official source of gRPC and its dependencies, using GitHub Actions.\n\nThis project was created to compile applications on the Raspberry Pi that need up-to-date versions of gRPC, avoiding preliminary lengthy compilations of gRPC on the Pi.\n\nThe x64 builds are a by-product of the overall build process, which involves cross-compiling for ARM, which in turn requires gRPC's `protoc` and `grpc_cpp_plugin` binaries to be available on the host (x64) system where the cross-compilation is taking place.\n\n\n\nThe main assets, which can be found in the [Releases](https://github.com/spujadas/grpc-builds/releases) section, are:\n\n- `grpc_*_amd64.deb` — Debian package of gRPC and Protobuf compilers for x64 Linux (), containing binaries and development files, which will be installed in `/usr/local`.\n- `grpc-*-amd64.tar.gz` — Compressed archive of gRPC for x64 Linux, with the same contents as the previous package, and designed to be installed in `/usr/local`.\n- `grpc_*_armhf.deb` — Debian package of gRPC for ARM Linux, containing binaries and development files, which will be installed in `/usr/local`.\n- `grpc-*-armhf.tar.gz` — Compressed archive of gRPC for ARM Linux, with the same contents as the previous package, and designed to be installed in `/usr/local`.\n\n\n\nThe following artefacts are also available under Releases:\n\n- `grpc_sysroot-*-armhf.tar.gz` — Compressed archive of gRPC for ARM Linux containing binaries and development files for cross-compilation purposes. The contents are designed to be installed in `/tmp/raspberrypi_root`. Cross-compilation will require development files for zlib for ARM (see next point).\n- `zlib_sysroot-*-armhf.tar.gz` — Compressed archive of [zlib](https://github.com/madler/zlib) for ARM Linux containing binaries and development files for cross-compilation purposes. The contents are designed to be installed in `/tmp/raspberrypi_root`.\n- `zlib_*_armhf.deb` and `zlib-*-armhf.tar.gz` — Debian package and compressed archive of zlib for ARM Linux, containing binaries and development files, to be installed in `/usr/local`. *These files are generated as part of the build process, but they shouldn't be needed in general as all Linux distributions have official zlib packages.*\n\n\n\n### Build\n\nThe assets and artefacts are automatically built by GitHub Actions, but if you want to build them yourself, for instance to tinker with the build scripts, then you can run the build scripts one after the other, as follows:\n\n```\nsource ./01_set_env_vars_common_grpc.sh\n./02_checkout_grpc.sh\nsource ./03_set_env_vars_zlib.sh\n./04_install_prerequisites.sh\n./05_build_grpc_amd64.sh\n./06_install_grpc_amd64.sh  # or sudo dpkg -i $GRPC_HOST_DEBIAN_PACKAGE_NAME\n./07_build_zlib_armhf.sh\n./08_install_zlib_sysroot.sh\n./09_build_grpc_armhf.sh\n```\n\nThe resulting packages will be created in the current directory.\n\n\n\n### Use\n\nThe shared libraries for ARM Linux have been compiled using [Raspberry Pi’s official cross-compiler](https://github.com/raspberrypi/tools), which includes GCC version 4.9.3.\n\n*Note – Cross-compiling using [abhiTronix’s cross-compiler](https://github.com/abhiTronix/raspberry-pi-cross-compilers/) with GCC version 6.3.0 was attempted, and [successfully generated static versions](https://github.com/spujadas/grpc-builds/commit/e9ccaf115aa6817ae0ca797885ee3882ed837628) of the GRPC libraries, but [failed to generate dynamic libraries](https://github.com/spujadas/grpc-builds/commit/f18bb7dd381ed253b2ade87eb530e54a7b391009).* \n\nThis appears to mean that programs must be compiled against the shared libraries using a similar version of GCC (tested as working with version 4.9.4, tested as failing with version 8.3.0).\n\nTo install an additional version of gcc/g++ on your Pi and activate it, follow the instructions below.\n\n```\n$ gcc --version | grep gcc\ngcc (Raspbian 8.3.0-6+rpi1) 8.3.0\n\n$ sudo apt-get install gcc-4.9 g++-4.9\n\n$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9\nupdate-alternatives: using /usr/bin/gcc-4.9 to provide /usr/bin/gcc (gcc) in auto mode\n\n$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8\n\n$ sudo update-alternatives --config gcc\nThere are 2 choices for the alternative gcc (providing /usr/bin/gcc).\n\n  Selection    Path              Priority   Status\n------------------------------------------------------------\n\n* 0            /usr/bin/gcc-8     60        auto mode\n  1            /usr/bin/gcc-4.9   40        manual mode\n  2            /usr/bin/gcc-8     60        manual mode\n\nPress \u003center\u003e to keep the current choice[*], or type selection number:1\n\n$ gcc --version | grep gcc\ngcc (Raspbian 4.9.4-2+rpi1+b19) 4.9.4\n```\n\nOnce you have finished compiling your program against the GRPC shared libraries, to revert to the default GCC compilers, run `sudo update-alternatives --config gcc` and select the default version.\n\n\n\n### Alternatives\n\nYour x64 or ARM Linux distribution may have official packages of gRPC binaries, development files, and dependencies, e.g. for Ubuntu: `libgrpc6`, `libgrpc++1`, `libgrpc-dev`, `libgrpc++-dev`, `protobuf-compiler` (provides `protoc`), `protobuf-compiler-grpc` (provides `grpc_*_plugin`).\n\nYou may also follow the [official build instructions for gRPC C++](https://github.com/grpc/grpc/blob/master/BUILDING.md) to build gRPC yourself.\n\n\n\n### About\n\nWritten by [Sébastien Pujadas](https://pujadas.net/), released under the [Apache 2.0 license](https://github.com/spujadas/grpc-build/blob/master/LICENSE).\n\nThis repository was originally created to make it easier to build and package the author's [departure board virtual and physical (LED matrix) board servers](https://github.com/spujadas/departure-board-servers-cpp).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspujadas%2Fgrpc-builds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspujadas%2Fgrpc-builds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspujadas%2Fgrpc-builds/lists"}