使用GCC编译含FMT库的C++代码时提示找不到文件或目录
问题解决:GCC编译FMT库代码时的链接错误
错误根源
你的编译命令存在语法错误:
- 误将
FMT当作源文件传入,实际它是需要链接的库,应该用-lfmt参数指定 - 输出文件名
FMT Colours包含空格但未加引号,导致GCC将Colours也当作输入文件处理,进而被ld判定为找不到的文件 - 代码中使用了
fg、fmt::color等功能,但未包含对应的头文件fmt/color.h,会引发编译错误
修正后的代码
#include <iostream> #include <fmt/core.h> #include <fmt/color.h> // 新增:引入颜色相关功能的头文件 int main() { fmt::print(fg(fmt::color::green), "This text is green.\n"); fmt::print(fg(fmt::color::red) | fmt::emphasis::bold, "This text is bold and red.\n"); return 0; }
正确的编译命令
cd "c:\Users\Surface Book 2\Documents\C++ Stuff\Colours\" ; if ($?) { g++ Colours.cpp -o "FMT Colours" -lfmt } ; if ($?) { .\"FMT Colours" }
额外说明
如果是手动编译安装的FMT库(非通过包管理器如pacman安装),需额外指定头文件和库的路径:
g++ Colours.cpp -o "FMT Colours" -I/你的FMT头文件路径 -L/你的FMT库文件路径 -lfmt
将路径替换为你实际安装FMT的目录即可。
内容的提问来源于stack exchange,提问作者Metactal
相关产品推荐
相关产品推荐

