macOS编译时遇jsoncpp致命错误:找不到json/json.h文件
解决macOS下jsoncpp编译时头文件找不到的问题
核心问题定位
你遇到的json/json.h: No such file or directory错误,本质是系统里根本没安装jsoncpp库——虽然brew --prefix jsoncpp返回了路径,但brew info jsoncpp显示未安装,这个路径只是brew预留的默认安装位置,实际没有库文件。
分步解决步骤
先安装jsoncpp库
执行brew安装命令:brew install jsoncpp安装完成后,再用
brew info jsoncpp确认状态,此时会显示已安装的版本和实际文件路径。使用正确的编译命令
安装完成后,保持代码里的头文件引用为#include <json/json.h>,用以下命令编译:g++-11 myfile.cpp -o myfile $(pkg-config --cflags --libs jsoncpp)或者手动指定头文件和库路径(brew安装后默认路径是
/usr/local/opt/jsoncpp):g++-11 -I/usr/local/opt/jsoncpp/include -L/usr/local/opt/jsoncpp/lib myfile.cpp -o myfile -ljsoncpp你之前的
-L参数只写了/usr/local/opt/jsoncpp,实际库文件在lib子目录下,这也是之前编译失败的原因之一。验证头文件是否存在
安装完成后,执行以下命令应该能找到头文件:find /usr/local/opt/jsoncpp -name json.h正常会返回
/usr/local/opt/jsoncpp/include/json/json.h。
额外说明
- 不要修改代码里的头文件引用为
#include <jsoncpp/json/json.h>,标准的jsoncpp头文件路径就是json/json.h,修改反而会导致后续移植问题。 - 之前的
find /usr -name json.h | grep -f json/命令有误,正确的过滤应该是grep "json/",不过安装库后直接找/usr/local/opt/jsoncpp下的文件更直接。
内容的提问来源于stack exchange,提问作者ishandutta2007
相关产品推荐
相关产品推荐

