CentOS 9 使用的是新的包管理器 dnf,而 gflags 和 glog 不是默认的包,它们不在 CentOS 9 的官方仓库中。你需要使用其他方式来安装它们。
对于 gflags,你可以从源代码编译安装。对于 glog,它是一个依赖 gflags 的库,所以你需要先安装 gflags。
以下是在 CentOS 9 上从源代码编译安装 gflags 和 glog 的步骤:
安装必要的依赖:
sudo dnf install -y gcc gcc-c++ cmake
下载 gflags 源代码:
wget https://github.com/gflags/gflags/archive/v2.2.2.tar.gz
tar -zxvf v2.2.2.tar.gz
cd gflags-2.2.2
编译和安装 gflags:
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON
make
sudo make install
安装 glog,同样从源代码编译:
wget https://github.com/google/glog/archive/v0.6.0.tar.gz
tar -zxvf v0.6.0.tar.gz
cd glog-0.6.0
编译和安装 glog:
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DINSTALL_HEADERS=ON
make
sudo make install
完成以上步骤后,gflags 和 glog 应该被安装在你的 CentOS 9 系统上。注意,具体的版本号(例如 v2.2.2 和 v0.6.0)可能会变化,请根据最新的可用版本进行安装。
其他–glog编译报错:
/usr/bin/ld: /usr/local/lib/libgflags_nothreads.a(gflags.cc.o): relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib/libgflags_nothreads.a(gflags_reporting.cc.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib/libgflags_nothreads.a(gflags_completions.cc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
原因:
主要原因是 gflags 编译默认不是共享库,需要保证 gflags 编译成共享库
因此需要重新编译 gflags, 并重新安装 gflags 。即cmake选项需要加上-DBUILD_SHARED_LIBS=ON
然后重新编译自己的程序,就可以编译成功了~~~~