openwrt編譯報錯,找不到json文件 fatal error: json-c/json.h: No such file or directory


最近在修改配置文件等一番操作后,編譯報錯了:

[  4%] Building C object CMakeFiles/netifd.dir/handler.c.o
In file included from /home/jack/openwrt/7621-openwrt/build_dir/target-mipsel_24kc_musl/netifd-2020-12-14-88c6003e/handler.c:22:
/home/jack/openwrt/7621-openwrt/build_dir/target-mipsel_24kc_musl/netifd-2020-12-14-88c6003e/handler.h:18:10: fatal error: json-c/json.h: No such file or directory
 #include <json-c/json.h>
          ^~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/netifd.dir/build.make:133: recipe for target 'CMakeFiles/netifd.dir/handler.c.o' failed

看提示是handler.c.o找不到json.h文件失敗。

查找引導json文件的路徑及是否存在:進入到CMakeFiles/netifd.dir/目錄(編譯后生成的目錄,在handler.c的目錄中,其它文件編譯時基本也會在其目錄中生成相應的CMakeFile目錄)

/7621-openwrt/build_dir/target-mipsel_24kc_musl/netifd-2020-12-14-88c6003e/CMakeFiles/netifd.dir/目錄中,查看flags.make,
C_FLAGS = -Os -pipe -mno-branch-likely -mips32r2 
-mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts
-Wno-error=unused-but-set-variable
-Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16
-fmacro-prefix-map=/home/jack/openwrt/7621-openwrt/build_dir/target-mipsel_24kc_musl/netifd-2020-12-14-88c6003e=netifd-2020-12-14-88c6003e
-Wformat -Werror=format-security -fstack-protector
-D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -I/home/jack/openwrt/7621-openwrt/staging_dir/target-mipsel_24kc_musl/usr/include/libnl-tiny
-I/home/jack/openwrt/7621-openwrt/staging_dir/target-mipsel_24kc_musl/usr/include -flto -DNDEBUG -Os -Wall -Werror
--std=gnu99 -Wmissing-declarations -Wno-unknown-warning-option -Wno-format-truncation -Wimplicit-fallthrough -g3

引用的 json.c 文件路徑在    /7621-openwrt/staging_dir/target-mipsel_24kc_musl/usr/include  目錄中

經查看,目錄中只有一個名稱為 json 的目錄及里中也有 json.c 文件。  隨猜想其他的文件可能引用的也是 json-c/json.c 這個目錄。故,把 json目錄名 改為 json-c

重新編譯后,正常通過。

后記,遇到相似找不到引用文件的報錯,可使用相似方法處理。缺依賴庫需要安裝相應的依賴。

另一方法是:make dirclean  清除target_dir和build_dir的內容,重新生成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM