Introduction to Protobuf
The Protobuf package contains
utilities and libraries for using data in Google's data interchange
format.
This package is known to build and work properly using an LFS 12.2
platform.
Package Information
Protobuf Dependencies
Required
Abseil-cpp-20240722.0 and CMake-3.30.2
Optional
gtest
(for tests)
Installation of Protobuf
Install Protobuf by running the
following commands:
mkdir build &&
cd build &&
cmake -D CMAKE_INSTALL_PREFIX=/usr \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_SKIP_INSTALL_RPATH=ON \
-D protobuf_BUILD_TESTS=OFF \
-D protobuf_ABSL_PROVIDER=package \
-D protobuf_BUILD_LIBUPB=OFF \
-D protobuf_BUILD_SHARED_LIBS=ON \
-D utf8_range_ENABLE_INSTALL=OFF \
-G Ninja .. &&
ninja
This package does come with a test suite, but it requires gtest,
which is not part of BLFS.
Now, as the root
user:
sed 's/utf8_range//' -i *.pc &&
ninja install
Command Explanations
-D
CMAKE_SKIP_INSTALL_RPATH=ON
: This switch makes
cmake remove
hardcoded library search paths (rpath) when installing a binary
executable file or a shared library. This package does not need
rpath once it's installed into the standard location, and rpath may
sometimes cause unwanted effects or even security issues.
sed 's/utf8_range//' -i
*.pc: This command removes a leftover reference to
libutf8_range from the pkg-config files installed by this package.
-D
protobuf_BUILD_TESTS=OFF
: This parameter prevents the
tests from being built because gtest is not part of
BLFS.
-D
protobuf_ABSL_PROVIDER=package
: This parameter allows
the build system to use the system-installed copy of Abseil-cpp-20240722.0.
-D
protobuf_BUILD_SHARED_LIBS=ON
: This parameter enables
building shared versions of the libraries provided by this package
instead of static versions.
-D
utf8_range_ENABLE_INSTALL=OFF
: This parameter disables
installing the utf8_range static library. The functions provided by
this library and used by protobuf is already embedded into
libprotobuf.so
, so installing a full
copy of the static library is just wasting the disk space.