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.