Installation of Protobuf
Install Protobuf by running the
following commands:
mkdir build &&
cd build &&
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-Dprotobuf_BUILD_TESTS=OFF \
-Dprotobuf_ABSL_PROVIDER=package \
-Dprotobuf_BUILD_LIBUPB=OFF \
-Dprotobuf_BUILD_SHARED_LIBS=ON \
-Dutf8_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
-DCMAKE_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.
-Dprotobuf_BUILD_TESTS=OFF
:
This parameter prevents the tests from being built because
gtest is not part of
BLFS.
-Dprotobuf_ABSL_PROVIDER=package
:
This parameter allows the build system to use the system-installed
copy of Abseil-cpp-20240116.2.
-Dprotobuf_BUILD_SHARED_LIBS=ON
: This
parameter enables building shared versions of the libraries
provided by this package instead of static versions.
-Dutf8_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.