Directorio de artículos
escrito en frente
El entorno operativo del autor.
1. Descripción del problema
al compilar el programa
/usr/bin/ld: /usr/lib/libceres.so.1.14.0: undefined reference to `google::kLogSiteUninitialized'
collect2: error: ld returned 1 exit status`
Dos, la solución
El motivo de este problema es que glog
la versión es incorrecta. La nueva versión glog
elimina la variable google::kLogSiteUninitialized
.
Solución uno (solución propia)
Para la configuración en la modificación CMakeLists.txt
, establezca primero la ubicación de destino del glog:
el originalCMakeLists.txt
set(GFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_CONFIGURATION TRUE)
set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION TRUE)
cambie a:
set(GFLAGS_PREFER_EXPORTED_GFLAGS_CMAKE_CONFIGURATION FALSE)
set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION FALSE)
solución dos
Reemplace glog
la versión:
(Las instrucciones aquí son del enlace de referencia [2] )
Desinstale el glog instalado originalmente en el sistema y luego instale la versión anterior de glog, la versión instalada aquí es v0.5.0-rc2
:
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
Link de referencia
[1] shaoxh. referencia indefinida a google::kLogSiteUninitialized #178 [EB/OL]. https://github.com/MIT-SPARK/Kimera-VIO/issues/178, 2021-10-14/2023-01-14.
[2] rancheng. referencia indefinida a `google::kLogSiteUninitialized' con cmake #543 [EB/OL]. https://github.com/google/glog/issues/543, 2021-04-20/2023-01-14.