La solución de referencia para el error de compilación referencia indefinida a `google::kLogSiteUninitialized'

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 glogla versión es incorrecta. La nueva versión glogelimina 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 glogla 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.

Supongo que te gusta

Origin blog.csdn.net/qq_39779233/article/details/130163184
Recomendado
Clasificación