This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3352:TI-PROCESSOR-SDK-LINUX-AM335x-EVM-09.01.00.001内核编译错误

Guru**** 2481465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1451698/am3352-ti-processor-sdk-linux-am335x-evm-09-01-00-001-kernel-compilation-error

器件型号:AM3352

工具与软件:

大家好、团队成员:

使用 ti-processor-sdk-linux-am335x-evm-09.01.00.001编译 Linux 内核时、我报告了以下错误。

错误:无法加载插件。/scripts/gcc-plugins/arm_sp_per_task_plugin.so:./scripts/gcc-plugins/arm_ssp_per_task_plugin.so:未定义的符号:_ZN8opt_pass14set_pad_paramEjb

该位置如何?

以下是完整的编译信息。

make ARCH=arm CROSS_COMPILE=arm-oE-linux-gnueabi- uImage
 SYSHDR arch/arm/include/general/uapi/asm/unistd-oabi.h
 SYSHDR arch/arm/include/general/uapi/asm/unistd-eabi.h
 HOSTCC scripts/basic/fixdep
 HOSTCC 脚本/DTC/DTC.o
 HOSTCC scripts/DTC/flattree.o
 HOSTCC 脚本/DTC/fstree.o
 HOSTCC 脚本/DTC/DATA.o.
 HOSTCC 脚本/DTC/livetree.o
 HOSTCC 脚本/DTC/treesource.o.
 HOSTCC 脚本/DTC/srcpos.o
 HOSTCC 脚本/DTC/CHECK.o
 HOSTCC 脚本/DTC/util.o
 lex    scripts/DTC/DTC-lex.lex.c.
 Yacc   scripts/DTC/DTC-parser.tab。[ch]
 HOSTCC scripts/DTC/DTC-lexer.lex.o.
 HOSTCC scripts/DTC/DTC-parser.tab.o
 HOSTLD 脚本/DTC/DTC
 HOSTCC scripts/DTC/libfdt/fdt.o
 HOSTCC scripts/DTC/libfdt/fdt_ro.o
 HOSTCC 脚本/DTC/libfdt/fdt_wip.o
 HOSTCC 脚本/DTC/libfdt/FDT_sw.o
 HOSTCC scripts/DTC/libfdt/fdt_rw.o
 HOSTCC 脚本/DTC/libfdt/fdt_strerror.o
 HOSTCC scripts/DTC/libfdt/fdt_empty_tree.o
 HOSTCC scripts/DTC/libfdt/fdt_addresss.o
 HOSTCC 脚本/DTC/libfdt/fdt_overlay .o
 HOSTCC 脚本/DTC/fdtoverlay .o
 HOSTLD 脚本/DTC/fdtoverlay
 HOSTCXX scripts/gcc-plugins/arm_ssp_per_task_plugin.so
 HOSTCC scripts/kallsyms
 HOSTCC 脚本/可排序
 HOSTCC 脚本/asn1_compiler
 sysr  arch/arm/include/general/asm/unistd-nr.h
 Gen    arch/arm/include/general/asm/mach-types.h
 SYSTBL arch/arm/include/general/calls-oabi。 S
 SYSTBL arch/arm/include/generated/calls-eabi。 S
 cc     scripts/mod/empty.o
CC1:错误:无法加载插件。/scripts/gcc-plugins/arm_ssp_per_task_plugin.so:./scripts/gcc-plugins/arm_ssp_per_task_plugin.so:未定义的符号:_ZN8opt_pass14set_pass_paramEjb
make[1]:***[scripts/Makefile.build:250:scripts/mod/empty.o]错误1.

此致、

Tom Liu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我目前在切换到最新版本9.3时遇到同样的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tom Liu、

    感谢您的报告。 我看不到您的确切行为、但为了构建内核、AM335x Linux SDK 文档至少需要进行2项重大更改。 让我们一起看一下这两项更改。

    首先、我能让您运行顶级 makefile 构建吗?  

    就像这样:

    /path/to/ti-processor-sdk-linux-am335x-evm-09.01.00.001$ make linux

    在我的机器上、构建失败、如下所示:

    ~/sdks/ti-processor-sdk-linux-am335x-evm-09.01.00.001$ make linux
    ...
    =================================
    Building the Linux Kernel
    =================================
    mkdir -p /home/user/sdks/ti-processor-sdk-linux-am335x-evm-09.01.00.001/board-support/built-images
    make -C /home/user/sdks/ti-processor-sdk-linux-am335x-evm-09.01.00.001/board-support/ti-linux-kernel* ARCH=arm CROSS_COMPILE=/home/user/sdks/ti-processor-s
    dk-linux-am335x-evm-09.01.00.001/external-toolchain-dir/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- multi_v7_defconfig ti_multi
    _v7_prune.config no_smp.config
    ...
    /home/user/sdks/ti-processor-sdk-linux-am335x-evm-09.01.00.001/external-toolchain-dir/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm
    -none-linux-gnueabihf/11.3.1/plugin/include/system.h:698:10: fatal error: gmp.h: No such file or directory
      698 | #include <gmp.h>
          |          ^~~~~~~
    compilation terminated.
    make[3]: *** [scripts/gcc-plugins/Makefile:54: scripts/gcc-plugins/arm_ssp_per_task_plugin.so] Error 1
    make[2]: *** [scripts/Makefile.build:502: scripts/gcc-plugins] Error 2
    make[2]: *** Waiting for unfinished jobs....
    make[1]: *** [Makefile:1273: scripts] Error 2
    make[1]: Leaving directory '/home/user/sdks/ti-processor-sdk-linux-am335x-evm-09.01.00.001/board-support/ti-linux-kernel-6.1.46+gitAUTOINC+1d4b5da681-g1d4b5da681'
    make: *** [makerules/Makefile_linux:8: linux] Error 2

    首先、我必须根据此 e2e 线程安装一些其他库:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1335480/am3358-ep-gmp-h-no-such-file-or-directory

    sudo apt-get install libgmp3-dev
    sudo apt-get install libmpc-dev

    我已经对 SDK 文档提交了一个错误、添加了一些有关这些必要库的信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在、我们已安装了这些库、接下来我可以看到您在执行这组修改后的步骤后的行为:

    export CROSS_COMPILE_32="/path/to/ti-processor-sdk-linux-am335x-evm-09.01.00.001/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-"
    make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_32" distclean
    make ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_32" multi_v7_defconfig ti_multi_v7_prune.config no_smp.config
    make -j<thread_number> ARCH=arm CROSS_COMPILE="$CROSS_COMPILE_32" zImage
    ...
    cc1: error: cannot load plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so: ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so: undefined symbol: _ZN8opt_pass14set_pass_paramEjb
    cc1: error: cannot load plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so: ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so: undefined symbol: _ZN8opt_pass14set_pass_paramEjb
    make[1]: *** [scripts/Makefile.build:250: scripts/mod/empty.o] Error 1
    make[1]: *** Waiting for unfinished jobs....
    make[1]: *** [scripts/Makefile.build:118: scripts/mod/devicetable-offsets.s] Error 1
    make: *** [Makefile:1288: prepare0] Error 2
    

    下一步是使用正确的工具链。 当您查看上一个回复中的"make linux"输出时、您会看到我们没有使用 SDK 9.1或 SDK 9.3中当前记录的工具链:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/09_01_00_001/exports/docs/linux/Foundational_Components_Kernel_Users_Guide .html

    相反、makefile 会在单独的目录(称为 external-toolchain-dir)中使用工具链、如下所述: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1333628/am3359-compile-kernel-sdk-9-01-00-001

    我针对这个工具链文档问题提交了另一个错误。

    我今天的时间不多了。 我能让您使用该 external-toolchain-dir 中的工具链重试吗?

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Nick。

    此问题已得到解决

    此致

    Tom Liu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好  Tom Liu、

    我很高兴听到您能够取得进展! 感谢您确认您的解决方案、它将帮助未来的客户。 也感谢您报告这一点、以便我可以继续修改我们的文档。 如果您以后有任何问题、请随时创建新的 e2e 主题。

    此致、

    Nick