Android 源码编译Linux内核时出现fatal error: linux/netfilter/xt_dscp.h: No such file or directory

最近在Mac OSX上编译android 4.4.2的源码,碰到了N多问题,最头疼的就是在编译过程中遇到如下错误,网上搜索几天都不得解,后来终于搞清楚了:

1. 创建大小写敏感的磁盘镜像

    在Mac下编译android的源代码需要一个大小写敏感(Case Sensitive)的分区格式如果你原来的分区不是HFS+一类大小写敏感的文件格式,那么最简单的办法就是新建一个这种分区格式的dmg出来,命令如下:

    sudo hdiutil create -size 40g -type UDIF -fs HFSX -volname android /android.dmg
    sudo chown $USER /android.dmg

然后打开Finder用鼠标双击/android.dmg,Mac系统将会自动加载android.dmg。在Finder 的右侧“Devices” 目录栏下你将会看到android.dmg磁盘,双击打开,把android 所有的源代码拷贝进去,当成文件夹使用就可以了。

2. 源码包解压缩:我拿到整个源码Zip包在Mac下面解压缩,然后复制到上面创建好的android.dmg磁盘,但是编译每次都是报下面的错误。折腾好半天,才搞明白原因:

(1)Android的源码文件名称是大小写敏感的,源码中有很多同名但仅大小写不一样的文件。当源码Zip包在Mac下直接解压缩时,由于Mac文件系统默认是不区分大小写的,解压出来的一些文件可能被重名的文件覆盖而丢失。下面的编译错误就是由于解压缩时xt_dscp.h 丢失了,只保留了xt_DSCP.h。因此必须将Zip包复制到android.dmg磁盘,再解压缩。

(2)另外对于Windows和Linux 系统也要注意:要使用linux的解压缩命令解压源码包。linux的文件系统和windows的文件系统不一样,linux对文件名称的大小写敏感,而windows不会,所以linux的源码包不能使用windows的解压工具解压缩,不然解压出来的一些文件可能被重名的文件覆盖而丢失。

target thumb C: libext <= out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:18:37: error: linux/netfilter/xt_dscp.h: No such file or directory
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:45: error: 'XT_DSCP_MAX' undeclared here (not in a function)
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:46: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:46: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c: In function 'dscp_parse':
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:60: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:60: error: request for member 'invert' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:63: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:63: error: request for member 'dscp' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:65: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:65: error: request for member 'invert' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c: In function 'dscp_print':
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:82: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:82: error: request for member 'invert' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:82: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:82: error: request for member 'dscp' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:82: warning: format '%02x' expects type 'unsigned int', but argument 3 has type 'const struct xt_option_entry *'
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c: In function 'dscp_save':
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:90: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:90: error: request for member 'invert' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:90: error: dereferencing pointer to incomplete type
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:90: error: request for member 'dscp' in something not a structure or union
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:90: warning: format '%02x' expects type 'unsigned int', but argument 3 has type 'const struct xt_option_entry *'
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c: At top level:
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:97: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:97: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:97: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:98: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:98: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:98: error: invalid application of 'sizeof' to incomplete type 'struct xt_dscp_info' 
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.o] Error 1


引用\[1\]:最近在 Ubuntu 下编译 gcc6.3.0 出现如下报错: ../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:159:28: fatal error: linux/cyclades.h: No such file or directory #include <linux/cyclades.h> ^ compilation terminated. 。 引用\[3\]:在ubuntu 16.04编译神经网络代码候,遇到了这样一种错误? fatal error: SDL/SDL.h: No such file or directory    原因是SDL库没有安装,根据你使用的是SDL1还是SDL2来进行不同的安装:如下所示: SDL2 sudo apt-get install libsdl2-dev SDL1 sudo apt-get install libsdl1.2-dev 。 问题: fatal error: linux/delay.h: No such file or directory 是什么错误?如何解决? 回答: fatal error: linux/delay.h: No such file or directory 是一个编译错误,它表示在编译过程中找不到 linux/delay.h 文件。这个错误可能是由于缺少相应的头文件或库文件引起的。根据你提供的引用内容,我推测你可能遇到了类似的问题。在 Ubuntu 下编译 gcc6.3.0 出现了类似的错误,其中的 linux/cyclades.h 和 SDL/SDL.h 都是缺少的头文件。解决这个问题的方法是安装相应的库文件。根据你使用的是 SDL1 还是 SDL2,你可以使用以下命令来安装相应的库文件:SDL2 sudo apt-get install libsdl2-dev,SDL1 sudo apt-get install libsdl1.2-dev。这样就可以解决缺少头文件的问题了。 #### 引用[.reference_title] - *1* [Linux下gcc编译报错:fatal error: linux/cyclades.h: No such file or directory 解决办法](https://blog.csdn.net/weixin_46584887/article/details/122541522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [(笔记)Linux下的准确延,#include <linux/delay.h>调用出错](https://blog.csdn.net/weixin_34248023/article/details/85677208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ubuntu16.04 编译出错:fatal error: SDL/SDL.h: No such file or directory](https://blog.csdn.net/weixin_30563319/article/details/95334211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值