1,问题说明
环境:Ubuntu 20.04
问题:由于之前已经成功编译了武汉大学的OB_GINS,编译GICI-OPEN时出现如下问题:
/usr/bin/ld: libgici.so: undefined reference to `google::kLogSiteUninitialized'
/usr/bin/ld: libgici.so: undefined reference to `google::InitVLOG3__(int**, int*, char const*, int)'
经过查询,主要是由于新版的glog库删除了kLogSiteUninitialized相关函数,采用如下解决方案也不能解决问题:
git clone https://github.com/google/glog.git
cd glog/
git checkout v0.5.0-rc2
mkdir build && cd build
cmake ..
sudo make -j12 install
2,安装步骤
这个问题搞了好久,主要是gflags和glog版本的问题,各种不兼容错误。尝试到最后,按照如下步骤编译成功:
2.1 下载gflags源码并编译
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON ..
make -j4
sudo make install
2.2下载glog源码并编译
手动下载了glog-0.4.0(更高级的版本我看了下没有kLogSiteUninitialized函数。然后按照如下方法进行编译:
mkdir build && cd build
cmake -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
2.3 安装GICI及错误
编译的时候可能还会存在其他库链接失败的问题,如:
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/gflags/gflags-nonamespace-targets.cmake:115 (message):
The imported target "gflags_static" references the file
"/usr/lib/x86_64-linux-gnu/libgflags.a"
解决方法是通过locate定位对应的库,并直接建立链接:
ln -s /usr/local/lib/libgflags.a /usr/lib/x86_64-linux-gnu/libgflags.a
上述过程可能会涉及到glog和gflags库的重新卸载安装,我是通过sudo make install看编译完的库安装到了哪个目录,然后通过删除对应文件的方式来进行卸载。卸载完后重新编译安装。
上述过程编译成功的话,采用VS code可以很容易的成功运行。
746





