Android12之解决:scripts/gcc-wrapper.py, line 79, in run_gcc(一百六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中...... 】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中......】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

1.前言

本篇目的:Android12之解决scripts/gcc-wrapper.py", line 79, in run_gcc报错

2.报错如下:

make[1]: 进入目录"out/android-msm-pixel-4.9/private/msm-google"
  CC [M]  private/msm-google/drivers/zgj/test.o
Traceback (most recent call last):
  File "private/msm-google/scripts/gcc-wrapper.py", line 94, in <module>
    status = run_gcc()
  File "/private/msm-google/scripts/gcc-wrapper.py", line 79, in run_gcc
    print >> sys.stderr, line,
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
make[4]: *** [/private/msm-google/scripts/Makefile.build:349:kernel_4.9.270/private/msm-google/drivers/zgj/test.o] 错误 1
make[3]: *** [private/msm-google/Makefile:1669:_module_kernel_4.9.270/private/msm-google/drivers/zgj] 错误 2
make[2]: *** [Makefile:152:sub-make] 错误 2
make[1]: *** [Makefile:24:__sub-make] 错误 2
make[1]: 离开目录"kernel_4.9.270/out/android-msm-pixel-4.9/private/msm-google"
make: *** [Makefile:9:default] 错误 2

3.报错原因:

  • python版本的语法问题

  • Python2和Python3之间的主要区别。

  1. 语法差异:Python2使用的是ASCII编码,而Python3则使用的是Unicode编码。这意味着Python3可以更好地支持多语言和特殊字符。另外,Python3采用的是print()函数而不是print语句,并且要求括号是必需的,而Python2使用的是print语句。

  2. 整数除法:在Python2中,两个整数相除的结果仍然是一个整数,而不是一个浮点数。而在Python3中,两个整数相除的结果将会是一个浮点数。如果想在Python2中执行浮点除法,需要将其中一个数转为浮点型。

  3. print函数:在Python2中,print语句可以直接打印多个变量,例如:print "Hello", name。而在Python3中,print函数需要使用括号并且将变量以逗号分隔,例如:print("Hello", name)。

  4. 异常处理:在Python2中,使用的是关键字except来捕获异常,而在Python3中,使用的是关键字except Exception as e。

  5. 数据类型:在Python3中,引入了新的数据类型比如bytes和bytearray,以及新的语法来处理文本和二进制数据。Python2中的字符串类型默认是ASCII编码的,而Python3中的字符串类型默认是Unicode编码的。

  6. range函数:在Python3中,range函数返回的是一个可迭代对象,而在Python2中,返回的是一个列表。这样的改变可以节省内存,并且更加高效。

  7. 输入函数:在Python2中,使用的是raw_input()函数获取用户输入,而在Python3中,使用的是input()函数。

  • 需要注意的是,由于Python2发布于2000年,所以在后来的发行版中,Python3进行了一些语法和功能的改变,以提升语言的性能和易用性。因此,Python3版本对一些旧的Python2代码可能不兼容,需要进行一些适应和修改。

  • 总结而言,Python2和Python3之间存在着一些重要的差别,包括语法、整数除法、print函数、异常处理、数据类型、range函数和输入函数等方面。因此,在进行Python编程时,需要根据使用的版本来选择相应的语法和功能。

4.解决

  • kernel/private/msm-google/scripts/gcc-wrapper.py

修改前:

def run_gcc():
    args = sys.argv[1:]
    # Look for -o
    try:
        i = args.index('-o')
        global ofile
        ofile = args[i+1]
    except (ValueError, IndexError):
        pass

    compiler = sys.argv[0]

    try:
        proc = subprocess.Popen(args, stderr=subprocess.PIPE)
        for line in proc.stderr:
-           print >> sys.stderr, line,
-            interpret_warning(line)

        result = proc.wait()
    except OSError as e:
        result = e.errno
        if result == errno.ENOENT:
            print >> sys.stderr, args[0] + ':',e.strerror
            print >> sys.stderr, 'Is your PATH set correctly?'
        else:
            print >> sys.stderr, ' '.join(args), str(e)

    return result

if __name__ == '__main__':
    status = run_gcc()
    sys.exit(status)

修改后:

def run_gcc():
    args = sys.argv[1:]
    # Look for -o
    try:
        i = args.index('-o')
        global ofile
        ofile = args[i+1]
    except (ValueError, IndexError):
        pass

    compiler = sys.argv[0]

    try:
        proc = subprocess.Popen(args, stderr=subprocess.PIPE)
        for line in proc.stderr:
+            print ( sys.stderr, line,)
+           # interpret_warning(line)

        result = proc.wait()
    except OSError as e:
        result = e.errno
        if result == errno.ENOENT:
            print >> sys.stderr, args[0] + ':',e.strerror
            print >> sys.stderr, 'Is your PATH set correctly?'
        else:
            print >> sys.stderr, ' '.join(args), str(e)

    return result

if __name__ == '__main__':
    status = run_gcc()
    sys.exit(status)
相关推荐
放羊的牧码7 个月前
Maven - 编译报错:程序包 XXX 不存在(多模块项目)
java·maven·springboot·pom·编译报错·boot-inf·程序包 xxx 不存在
Peter(阿斯拉)8 个月前
[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]
c语言·c++·vscode·编译报错·编译配置