c++常用库学习
网上推荐的c++库有boost,folly,proxygen等,但是这些都是大库,学习周期长,并且一开始就使用这些库,还是有些问题的。比如库之间的依赖关系,这个就比较难搞,这是基本的开发环境的搭建。开发c++中,linux,macos就成为了良好的库管理工具。比如usr/local/include中放置c++的头文件,/usr/local/lib中放置编译后的文件。但是我们开发的程序是怎么使用静态库文件,我对这些都知之甚少了。
在c++中使用别人的库比java中麻烦一点,一般需要自己下载源码,使用make,cmake等工具编译,并且c++的库并不是很多,使用的时候回遇到很多问题。eclipse对于c++开发还是比较友好的,可以读取到c++的header文件和连接库(编译时也会以此为相对路径读取),比如头文件/usr/include, /usr/local/include, /user/lib, /usr/local/lib。但是这篇博文说只能链接到/usr/lib:http://www.voidcn.com/article/p-spjcvdzc-bum.html.
我在GitHub下载了一个常用的fmt库,试用一下。这个库很成熟了,编译安装脚本都有了,但是在eclipse中调试好久后,都提示编译错误,什么x86啦,我以为是gcc的版本和编译-std的问题。折腾了很久,发现好像没有连接/usr/local/lib????
make all Building file: ../src/learn_folly.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -Wall -c -fmessage-length=0 -std=c++17 -MMD -MP -MF"src/learn_folly.d" -MT"src/learn_folly.o" -o "src/learn_folly.o" "../src/learn_folly.cpp" Finished building: ../src/learn_folly.cpp Building target: learn_folly Invoking: MacOS X C++ Linker g++ -o "learn_folly" ./src/learn_folly.o /usr/local/lib/libfmt.a Finished building target: learn_folly
从eclipse这个编译的命令行,可以看见使用了我配置的-std=c++17。同时使用macos的linker,连接了libfmt.a的库。
但是我用命令行去连接那个库时,还是报错。说明我还没有彻底弄明白这个机制。
可以命令行看man ld,ld就是链接的命令。
1 2 3 | In file included from /usr/local/include/folly/folly/CPortability.h:22: /usr/local/include/folly/folly/portability/Config.h:20:10: fatal error: 'folly/folly-config.h' file not found #include <folly/folly-config.h> |
这个错误有点难受,我看了文件夹下确实没有这个文件,但是我使用官方的安装脚本进行安装的,为甚么不对呢?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义