我是一个新的 C++ 用户,在程序中安装外部库时遇到了一些问题。目前,我正在尝试安装格式库。我下载了存储库内容并将其解压。然后我将子目录添加fmt
到usr/include/fmt
,但不起作用。我还尝试将其添加fmt
到usr/local/include
,也没有成功。以下是示例代码和返回的相应错误:
#include <iostream>
#include <string>
#include <format.h> // I also tried include <fmt/format.h>
using namespace std;
int main(){
string s = fmt::format("{0}{1}{0}", "abra", "cad");
cout<< s<<endl;
return 0;
}
错误:
stack.cpp:3:10: fatal error: format.h: No such file or directory
#include <format.h>
^~~~~~~~~~
compilation terminated
我注意到,在使用fmt
以下命令传输文件夹后,该文件夹已“关闭”(标有“X”)usr/~
:
cp fmt-master/include/fmt usr/local/include/fmt
我尝试使用以下命令更改文件夹权限:
sudo chmod -rwx usr/local/include/fmt
但即使这样也不起作用。命令运行时没有输出,fmt
文件夹继续显示 X 标记。我想知道 1) 将库文件夹保存/usr/include
在 C++ 中安装外部库的标准程序是什么?(对我来说这看起来太手动了)2) 我在这里做错了什么?
答案1
大多数软件包和库不需要在 Ubuntu 上手动下载和安装。您可以libfmt-dev
使用官方的“universe”存储库进行安装apt
。
运行以下命令进行安装:
sudo add-apt-repository universe
sudo apt update
sudo apt install libfmt-dev
Ubuntu 存储库中的大多数“构建”类型包末尾都有“dev”后缀。十有八九,当您需要安装一些先决条件或依赖项来使用 g++ 或 C++ 构建东西时,这些就是您需要的“lib”包。
要搜索可用的包,您可以使用apt-cache search
如下示例中的命令:
apt-cache search libfmt
如果获得的结果太多,可以通过管道命令grep
缩小结果范围,如下所示:
apt-cache search libfmt | grep dev
或者像这样:
apt-cache search fmt | grep 'C+'
或者您可以使用-i
标志grep
以使其不区分大小写,如下所示:
apt-cache search fmt | grep -i 'c+'