嵌入式linux学习笔记--spdlog 使用动态库的方法记录
2022/2/21 7:28:32
本文主要是介绍嵌入式linux学习笔记--spdlog 使用动态库的方法记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
之前项目中使用的spdlog 库,但是一直使用的是herder only 模式,简单是简单,但是编译的速度实在是太慢了,所以最近就在探索使用动态库的方法加速编译的速度。
仓库的地址 :
https://gitee.com/jeasonb/spdlog_dyn
使用方法
1. 动态库的编译方法
root@jeason:~/spdlog/dynamic# cmake --version cmake version 3.10.2 CMake suite maintained and supported by Kitware (kitware.com/cmake). root@jeason:~/spdlog/dynamic# mkdir build root@jeason:~/spdlog/dynamic# cd build/ ##### 下面使用的是 动态库的方法 root@jeason:~/spdlog/dynamic/build# cmake -DDYN=1 .. in dyn mode -- Configuring done -- Generating done -- Build files have been written to: /root/spdlog/dynamic/build root@jeason:~/spdlog/dynamic/build# make -j4 Scanning dependencies of target spdlog [ 10%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/file_sinks.cpp.o [ 20%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/async.cpp.o [ 30%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/cfg.cpp.o [ 40%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/color_sinks.cpp.o [ 50%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/fmt.cpp.o [ 60%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/spdlog.cpp.o [ 70%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/stdout_sinks.cpp.o [ 80%] Linking CXX shared library libspdlog.so [ 80%] Built target spdlog Scanning dependencies of target app [ 90%] Building CXX object CMakeFiles/app.dir/main.cpp.o [100%] Linking CXX executable app [100%] Built target app root@jeason:~/spdlog/dynamic/build# touch ../main.cpp ## 这里 touch 以下 重新编译 root@jeason:~/spdlog/dynamic/build# make [ 80%] Built target spdlog Scanning dependencies of target app [ 90%] Building CXX object CMakeFiles/app.dir/main.cpp.o [100%] Linking CXX executable app [100%] Built target app root@jeason:~/spdlog/dynamic/build#
读者可以自行体会编译时的速度,可以发现 除了第一次编译的比较慢之外,后续对main 修改完之后再编译都会变得很快。
2. 使用头文件进行编译
root@jeason:~/spdlog/dynamic/build# cmake -DDYN=0 .. in header mode -- Configuring done -- Generating done -- Build files have been written to: /root/spdlog/dynamic/build root@jeason:~/spdlog/dynamic/build# make -j4 Scanning dependencies of target app [ 50%] Building CXX object CMakeFiles/app.dir/main.cpp.o [100%] Linking CXX executable app [100%] Built target app root@jeason:~/spdlog/dynamic/build# ./app [2022-02-20 16:59:39.544] [info] 12323123 [2022-02-20 16:59:39.544] [info] 12323123 [2022-02-20 16:59:39.544] [info] 12323123 root@jeason:~/spdlog/dynamic/build# touch ../main.cpp root@jeason:~/spdlog/dynamic/build# make Scanning dependencies of target app [ 50%] Building CXX object CMakeFiles/app.dir/main.cpp.o [100%] Linking CXX executable app [100%] Built target app root@jeason:~/spdlog/dynamic/build#
在只使用头文件的模式下,编译器本质上是将所有的头文件进行展开 然后重新编译的,所以 即使是只编译一个很小的文件,编译的也是非常慢。
简单说就是 稍微改一下main.cpp 都需要编译很久!
具体的编译效果建议读者自行下载代码体会!
这篇关于嵌入式linux学习笔记--spdlog 使用动态库的方法记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南
- 2024-07-29linux命令行下好用的性能监控工具atop
- 2024-07-04Linux系统上离线升级SSH服务的具体操作步骤-icode9专业技术文章分享
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念