目前的主分支,版本 glog VERSION 0.6.0
修改 toolchains/gcc-cxx11.cmake
文件中的编译器,改成自身所使用的编译器
# Sample toolchain file for building with gcc compiler
#
# Typical usage:
# *) cmake -H. -B_build -DCMAKE_TOOLCHAIN_FILE="${PWD}/toolchains/gcc.cmake"
# set compiler
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
# set c++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
修改 CMakeLists.txt
文件 41行,关闭动态库,编译出来即为静态库
option (BUILD_SHARED_LIBS "Build shared libraries" OFF)
编译命令
cmake -H. -B_build -DCMAKE_TOOLCHAIN_FILE="${PWD}/toolchains/gcc-cxx11.cmake"
cmake --build ./_build/
cd _build/
make DESTDIR=./out install
编译安装完成,在 _build/out
目录下即为编译出的使用库与头文件。
先编译一个动态库,然后在编译一个静态库,将生成的静态库文件 libglog.a
拷贝至动态编译出的 _build/out/usr/local/lib 目录,这样后期不管静态还是动态编译就都不受影响
_build/out/usr/local/lib
_build/out/usr/local/include
新建或修改 local 文件夹名称为 glog ,将上面的 lib 与 include 文件夹复制到文件夹 glog 下,其后的 test.cpp 源文件与 glog 文件夹处于同一目录下,用于后面编译包含库文件与头文件。
FLAGS_alsologtostderr
为true,消息则存入日志文件,同时打印到 stderr。默认false,只存入日志文件。FLAGS_logtostderr
为true,消息只打印到 stderr。默认false,只存入日志文件。FLAGS_log_dir
设置日志存储目录编译完,默认 DCHECK_IS_ON() 为 1,故此处定义的名称, DLOG 等同于 LOG,其下如是。编译时加上 -DNDEBUG ,则其上带 D 开头的信息执行为 (void) 0,即 DLOG 等不执行。
#include
#include
int main(int argc, char **argv) {
//FLAGS_logtostderr = true;
FLAGS_alsologtostderr = true;
google::InitGoogleLogging(argv[0]);
FLAGS_log_dir = "./";
LOG(INFO) << "INFO";
LOG(WARNING) << "WARNING";
DLOG(ERROR) << "ERROR";
//LOG(FATAL) << "FATAL"; //执行则退出程序
DCHECK(!FLAGS_logtostderr) << "DCHECK"; //检查括号内部为真,否则退出程序
DLOG_IF(INFO, true) << "DLOG_IF"; //条件成立打印
DCHECK_EQ(FLAGS_alsologtostderr,0) << "DCHECK_EQ"; 检查括号内部相等,否则退出程序
return 0;
}
arm-linux-gnueabihf-g++ -o test test.cpp -I./glog/include -L./glog/lib -lglog -static -lpthread
交叉编译完成,由于程序不涉及硬件相关,也可直接在虚拟机上的 linux 运行(需静态编译)。
同样的程序,编译时加上 -DNDEBUG
arm-linux-gnueabihf-g++ -o test test.cpp -I./glog/include -L./glog/lib -lglog -static -lpthread -DNDEBUG
也可在 test.cpp 文件的 #include
之前 加上 #define NDEBUG
,则编译命令不变。
https://blog.csdn.net/kenstandlee/article/details/117335670
https://zhuanlan.zhihu.com/p/26025722
https://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html