arm64的android内核编译错误(msm8996)

时间:2016-08-29 17:29:15

标签: android arm64

我正在尝试为具有msm8996 SOC的arm64 android设备编译我的自定义内核。我在GitHub上克隆了我的内核只是为了确保我有一个完全干净的代码。然后我导出了这些:

export PATH=/home/nico/Downloads/kernel/aarch64-linux-android-4.9/bin:$PATH
export CROSS_COMPILE=aarch64-linux-android-
export ARCH=arm64
export SUBARCH=arm64

请记住,msm8996有两个双核集群,都是arm64。我尝试使用库存gcc 4.9工具链进行编译,该工具链使用了Cyanogenmod来源,然后我尝试使用两个UberTC 4.9工具链,可在此处找到:https://bitbucket.org/UBERTC/ aarch64-linux-android-4.9-kernel和aarch64-linux-android-4.9(我不知道这两者之间究竟有什么区别)。 每次我重新构建我的内核时,我都会执行

make mrproper

并删除了ccache文件夹。然后我进行了

make cm_pme_defconfig

最后一个

make -j2

我也尝试了与

相同的程序
make -j1

我找不到其他人得到同样的错误所以我决定在这里发布。 这是我的终端中的错误消息:

In file included from drivers/net/ethernet/msm/rndis_ipa_trace.h:81:0,
                 from drivers/net/ethernet/msm/rndis_ipa.c:32:
include/trace/define_trace.h:83:43: fatal error: ./rndis_ipa_trace.h:
No such file or directory
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
                                           ^
compilation terminated.

此外,这是我的GitHub上的内核https://github.com/nico151999/android_kernel_htc_msm8996

我真的需要你的帮助,虽然问题的解决方案可能非常明显。非常感谢提前;)

4 个答案:

答案 0 :(得分:3)

实际上基于这个commit我找到了全局答案 看看:

diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
index d70abdf..7f7e452 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
@@ -131,5 +131,5 @@ TRACE_EVENT(

 /* This part must be outside protection */
 #undef TRACE_INCLUDE_PATH
-#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_PATH ../../drivers/platform/msm/ipa/ipa_v2
 #include <trace/define_trace.h>

执行此操作(&#34; ../../")到其他TRACE_INCLUDE_PATH

答案 1 :(得分:2)

我遇到了与Qualcomm内核完全相同的问题。一般来说,加入     CFLAGS_trace.o:= -I $(src) 纠正Makefile可以解决这个构建问题。但它对我不起作用。所以我用了一个非常大胆的方法。补丁如下:

diff --git a/drivers/net/ethernet/msm/rndis_ipa_trace.h b/drivers/net/ethernet/msm/rndis_ipa_trace.h
index c0fc573..c18046b 100644
--- a/drivers/net/ethernet/msm/rndis_ipa_trace.h
+++ b/drivers/net/ethernet/msm/rndis_ipa_trace.h
@@ -77,5 +77,5 @@ TRACE_EVENT(

 /* This part must be outside protection */
 #undef TRACE_INCLUDE_PATH
-#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_PATH /opt/work/qcom/kernel/drivers/net/ethernet/msm/
 #include <trace/define_trace.h>
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
index d70abdf..7f7e452 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
@@ -131,5 +131,5 @@ TRACE_EVENT(

 /* This part must be outside protection */
 #undef TRACE_INCLUDE_PATH
-#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_PATH /opt/work/qcom/kernel/drivers/platform/msm/ipa/ipa_v2/
 #include <trace/define_trace.h>

答案 2 :(得分:0)

我遇到了同样的问题。

似乎您可以在每个目录的“ rndis_ipa_trace.h” 文件中修改“ TRACE_INCLUDE_PATH” 。并且,要修改的目录包含在构建错误消息中。

在进行构建时,我会在以下路径上发现问题,然后通过参考上述其他解决方案来进行构建。

drivers / clk / qcom / mdss / rndis_ipa_trace.h和drivers / platform / msm / ipa / ipa_v2 / rndis_ipa_trace.h

感谢您的指导=)

答案 3 :(得分:0)

当我开始在少数地方使用Linux Kernel v3.18(用于Moto G5(高通SD 430)的LineageOS源码)时,我偶然遇到了同样的问题。

在第15行修补文件“ drivers / net / ethernet / msm / rndis_ipa_trace.h”

- #define TRACE_INCLUDE_FILE rndis_ipa_trace
+ #define TRACE_INCLUDE_FILE ../drivers/net/ethernet/msm/rndis_ipa_trace

和文件“ drivers / platform / msm / ipa / ipa_v2 / ipa_trace.h” @第15行

- #define TRACE_INCLUDE_FILE ipa_trace
+ #define TRACE_INCLUDE_FILE ../drivers/platform/msm/ipa/ipa_v2/ipa_trace

所做的两项更改都是为了减少侵入性,并避免在“ include / traces”处修改文件,其他C文件可能会使用该文件。这是比一般更改更本地化的解决方案。而且,不必担心文件的绝对路径,“#include”调用的根位于“ / path / to / source / linux /。”,因此,如果您使用相对路径,知道它将从在那里,更改可能会起作用。