Android内核编译错误(针对arm64(msm8996))

4

我正在尝试为一台搭载msm8996 SOC的arm64安卓设备编译自定义内核。我在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架构。我尝试使用Cyanogenmod源代码中提供的标准gcc 4.9工具链进行编译,然后我尝试使用两个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个回答

6

实际上,基于这个提交记录,我找到了全局答案。看一下:

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>

将此 ("../../") 应用到其他 TRACE_INCLUDE_PATH。


这是真的,帮助我解决了这个问题。 默认的TRACE_INCLUDE_PATH与<trace/define_trace.h>的路径相同,通常为kernel_root_dir/include/trace。通过向上两个目录(../../)并包含引用<trace/define_trace.h>的c文件的路径,您可以修复任何此类编译错误,而无需硬编码构建路径。 在我的情况下,我将定义“#define TRACE_INCLUDE_PATH。”更改为“#define TRACE_INCLUDE_PATH ../../drivers/net/ethernet/msm/”,这是“rndis_ipa_trace.h”的路径,从而解决了OP所遇到的问题,这是相等的。 - Ezequiel Barbosa

3

我遇到了和高通内核完全相同的问题。通常情况下,将以下代码添加到正确的Makefile中即可解决编译问题。

CFLAGS_trace.o := -I$(src)

但是对于我来说,这并没有起作用。因此,我采用了一个非常大胆的方法。补丁如下:

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>

非常感谢。我尝试执行 Cyanogenmod 构建,成功构建了内核。然而,仅构建内核会导致我发布的错误。由于它可以与当前我使用的 Cyanogenmod ROM 构建一起工作,所以我目前不想应用此补丁。无论如何,当我再次想要构建只有内核时,我会尝试它。再次非常感谢 ;) - Nico Feulner

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

感谢您的指导 =)


0

当我开始使用Linux Kernel v3.18 - LineageOS源码为Moto G5(Qualcomm SD 430)工作时,我在几个地方遇到了同样的问题。

在第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

位于第15行的文件为“drivers/platform/msm/ipa/ipa_v2/ipa_trace.h”

- #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/。”,因此如果您使用相对路径,并知道它将从那里开始,这些更改可能会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接