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就是链接的命令。

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>

  这个错误有点难受,我看了文件夹下确实没有这个文件,但是我使用官方的安装脚本进行安装的,为甚么不对呢?

原文地址:https://www.cnblogs.com/Robin008/p/12080917.html