GNU/Linux - 如何编译kernel

使用 make 命令构建 Linux 内核涉及多个步骤。下面是整个过程的基本概述:

1. 获取内核源代码

    * 从 kernel.org 或你的发行版软件仓库下载内核源代码。

    * 将源代码解压缩到一个目录中。

2. 配置内核

    * 切换到内核源代码目录。

    * 可选择清理源代码树:make clean。

    * 使用以下方法之一配置内核:

        * 使用默认配置:make defconfig 或 make oldconfig。

        * 自定义配置:make menuconfig(基于文本)、make xconfig(基于 Qt)或 make gconfig(基于 GTK)。

3. 构建内核

    * 运行 make 来构建内核。可选择使用 -j 标志指定并行编译的线程数,后跟线程数(例如,make -j4 表示 4 个线程。)

    * 此步骤可能需要一些时间,具体取决于硬件和所选配置选项。

确保在开始编译前安装了必要的开发工具和依赖项(gcc、make、用于 menuconfig/xconfig/gconfig 的 libncurses-dev 等)。


Building the Linux kernel using the make command involves several steps. Here’s a basic overview of the process:

  1. Get the Kernel Source:

    • Download the kernel source code from kernel.org or your distribution’s repositories.

    • Extract the source code to a directory.

  2. Configure the Kernel:

    • Change to the kernel source directory.

    • Optionally, clean the source tree: make clean.

    • Configure the kernel using one of the following methods:

      • Use the default configuration: make defconfig or make oldconfig.

      • Customize the configuration: make menuconfig (text-based), make xconfig (Qt-based), or make gconfig (GTK-based).

  3. Build the Kernel:

    • Run make to build the kernel. Optionally, you can specify the number of threads for parallel compilation using -j flag followed by the number of threads (e.g., make -j4 for 4 threads. j means job).

    • This step might take some time depending on your hardware and the configuration options chosen.

Ensure you have the necessary development tools and dependencies installed (gcc, make, libncurses-dev for menuconfig/xconfig/gconfig, etc.) before starting the build process.


补充说明:

1,执行make defconfig,会将当前默认的配置写入.config文件,如果没有就创建。

2,make menuconfig,退出时提示是否保存,会保存到.config文件,如果没有就创建。

3,make时使用的就是.config配置文件,如果此文件发生变化,旧内容保存到.config.old,新内容保存到.config

4, make oldconfig会载入.config.old的内容到.config文件。


在Kernel源码根目录下运行make help:


 

$ make help

Cleaning targets:

  clean           - Remove most generated files but keep the config and

                    enough build support to build external modules

  mrproper        - Remove all generated files + config + various backup files

  distclean       - mrproper + remove editor backup and patch files



Configuration targets:

  config          - Update current config utilising a line-oriented program

  nconfig         - Update current config utilising a ncurses menu based program

  menuconfig      - Update current config utilising a menu based program

  xconfig         - Update current config utilising a Qt based front-end

  gconfig         - Update current config utilising a GTK+ based front-end

  oldconfig       - Update current config utilising a provided .config as base

  localmodconfig  -
lzy@lzy-VMware-Virtual-Platform:~/Desktop/xv6-labs-2020$ make riscv64-linux-gnu-gcc -c -o kernel/entry.o kernel/entry.S riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/start.o kernel/start.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/console.o kernel/console.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/printf.o kernel/printf.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/uart.o kernel/uart.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/kalloc.o kernel/kalloc.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/spinlock.o kernel/spinlock.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/string.o kernel/string.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/main.o kernel/main.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/vm.o kernel/vm.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/proc.o kernel/proc.c riscv64-linux-gnu-gcc -c -o kernel/swtch.o kernel/swtch.S riscv64-linux-gnu-gcc -c -o kernel/trampoline.o kernel/trampoline.S riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/trap.o kernel/trap.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/syscall.o kernel/syscall.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/sysproc.o kernel/sysproc.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/bio.o kernel/bio.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/fs.o kernel/fs.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/log.o kernel/log.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/sleeplock.o kernel/sleeplock.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/file.o kernel/file.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/pipe.o kernel/pipe.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/exec.o kernel/exec.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/sysfile.o kernel/sysfile.c riscv64-linux-gnu-gcc -c -o kernel/kernelvec.o kernel/kernelvec.S riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/plic.o kernel/plic.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -c -o kernel/virtio_disk.o kernel/virtio_disk.c riscv64-linux-gnu-gcc -Wall -Werror -O -fno-omit-frame-pointer -ggdb -DSOL_UTIL -MD -mcmodel=medany -ffreestanding -fno-common -nostdlib -mno-relax -I. -fno-stack-protector -fno-pie -no-pie -march=rv64g -nostdinc -I. -Ikernel -c user/initcode.S -o user/initcode.o riscv64-linux-gnu-ld -z max-page-size=4096 -N -e start -Ttext 0 -o user/initcode.out user/initcode.o riscv64-linux-gnu-ld: warning: user/initcode.out has a LOAD segment with RWX permissions riscv64-linux-gnu-objcopy -S -O binary user/initcode.out user/initcode riscv64-linux-gnu-objdump -S user/initcode.o > user/initcode.asm riscv64-linux-gnu-ld -z max-page-size=4096 -T kernel/kernel.ld -o kernel/kernel kernel/entry.o kernel/start.o kernel/console.o kernel/printf.o kernel/uart.o kernel/kalloc.o kernel/spinlock.o kernel/string.o kernel/main.o kernel/vm.o kernel/proc.o kernel/swtch.o kernel/trampoline.o kernel/trap.o kernel/syscall.o kernel/sysproc.o kernel/bio.o kernel/fs.o kernel/log.o kernel/sleeplock.o kernel/file.o kernel/pipe.o kernel/exec.o kernel/sysfile.o kernel/kernelvec.o kernel/plic.o kernel/virtio_disk.o riscv64-linux-gnu-ld: 警告: 无法找到项目符号 _entry; 缺省为 0000000080000000 riscv64-linux-gnu-ld: warning: kernel/kernel has a LOAD segment with RWX permissions riscv64-linux-gnu-objdump -S kernel/kernel > kernel/kernel.asm riscv64-linux-gnu-objdump -t kernel/kernel | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$/d' > kernel/kernel.sym 如何解决
06-16
arm-linux-gnueabihf-gcc -v Using built-in specs. COLLECT_GCC=arm-linux-gnueabihf-gcc COLLECT_LTO_WRAPPER=/root/100ask_imx6ull-qemu/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper Target: arm-linux-gnueabihf Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-6.2-2016.11/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-multiarch --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu Thread model: posix gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) 如何查看External toolchain kernel headers series
最新发布
12-12
wyl@ubuntu:~/NVMP/nvmp$ make V=s ERROR: please fix package/tp_package/lte/Makefile - see logs/package/tp_package/lte/dump.txt for details Collecting package info: done /bin/sh: 8: @echo: not found cat: /home/wyl/NVMP/nvmp/product_config/c510wv1/buildams.config: No such file or directory make[1]: Entering directory '/home/wyl/NVMP/nvmp' make[2]: Entering directory '/home/wyl/NVMP/nvmp' make[3]: Entering directory '/home/wyl/NVMP/nvmp/target/linux' make[4]: Entering directory '/home/wyl/NVMP/nvmp/target/linux/ingenic' if [ -e /home/wyl/NVMP/nvmp/product_config/c510wv1/board/board.h ]; then cp /home/wyl/NVMP/nvmp/product_config/c510wv1/board/board.h "/home/wyl/NVMP/nvmp/../sdk/soc/t31x/linux-3.10.14"/arch/mips/xburst/soc-t23/chip-t23/isvp/Pike/board.h -f; fi cd /home/wyl/NVMP/nvmp/include/nfs_kernel_script && ./modify_kernel_config_ingenic.sh /home/wyl/NVMP/nvmp/product_config/c510wv1 /home/wyl/NVMP/nvmp/scripts/kconfig.pl + + /home/wyl/NVMP/nvmp/target/linux/generic/config-3.10 /home/wyl/NVMP/nvmp/product_config/c510wv1/kernel.config /home/wyl/NVMP/nvmp/target/linux/ingenic/t31x/config-3.10 > /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target awk '/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}' /home/wyl/NVMP/nvmp/.config >> /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target echo "# CONFIG_KALLSYMS_EXTRA_PASS is not set" >> /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target echo "# CONFIG_KALLSYMS_ALL is not set" >> /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target echo "# CONFIG_KPROBES is not set" >> /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target /home/wyl/NVMP/nvmp/scripts/metadata.pl kconfig /home/wyl/NVMP/nvmp/tmp/.packageinfo /home/wyl/NVMP/nvmp/.config > /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.override /home/wyl/NVMP/nvmp/scripts/kconfig.pl 'm+' '+' /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.target /dev/null /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.override > /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config mv /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.old grep -v INITRAMFS /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config.old > /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config echo 'CONFIG_INITRAMFS_SOURCE=""' >> /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.config rm -rf /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/modules [ -d /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/user_headers ] || make -C "/home/wyl/NVMP/nvmp/../sdk/soc/t31x/linux-3.10.14" O=/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14 CROSS_COMPILE="mips-linux-uclibc-gnu-" HOSTCFLAGS="-O2 -I/home/wyl/NVMP/nvmp/staging_dir/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" ARCH="mips" KBUILD_HAVE_NLS=no CONFIG_SHELL="/bin/bash" V='' CC="mips-linux-uclibc-gnu-gcc" INSTALL_HDR_PATH=/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/user_headers headers_install echo "a74cf375559f80d758a3e54a15723d6b" > /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.vermagic cp "/home/wyl/NVMP/nvmp/../sdk/soc/t31x/linux-3.10.14"/scripts/ /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/ -rf mkdir -p /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/arch/mips/xburst/core cp "/home/wyl/NVMP/nvmp/../sdk/soc/t31x/linux-3.10.14"/arch/mips/xburst/core/mxu-v2-ex.obj /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/arch/mips/xburst/core/mxu-v2-ex.obj -rf touch /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.configured rm -f /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/vmlinux /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/System.map make -C "/home/wyl/NVMP/nvmp/../sdk/soc/t31x/linux-3.10.14" O=/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14 CROSS_COMPILE="mips-linux-uclibc-gnu-" HOSTCFLAGS="-O2 -I/home/wyl/NVMP/nvmp/staging_dir/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" ARCH="mips" KBUILD_HAVE_NLS=no CONFIG_SHELL="/bin/bash" V='' CC="mips-linux-uclibc-gnu-gcc" -j1 modules make[5]: Entering directory '/home/wyl/NVMP/sdk/soc/t31x/linux-3.10.14' make -C /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14 \ KBUILD_SRC=/home/wyl/NVMP/sdk/soc/t31x/linux-3.10.14 \ KBUILD_EXTMOD="" -f /home/wyl/NVMP/sdk/soc/t31x/linux-3.10.14/Makefile \ modules HOSTCC scripts/basic/fixdep GEN /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/Makefile HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2503:0: scripts/kconfig/menu.c: In function 'get_symbol_str': scripts/kconfig/menu.c:567:18: warning: 'jump' may be used uninitialized in this function [-Wmaybe-uninitialized] jump->offset = r->len - 1; ^ scripts/kconfig/menu.c:528:19: note: 'jump' was declared here struct jump_key *jump; ^ HOSTLD scripts/kconfig/conf scripts/kconfig/conf --silentoldconfig Kconfig .config:828:warning: override: DEFAULT_DEADLINE changes choice state .config:1758:warning: override: KERNEL_XZ changes choice state .config:3892:warning: override: TREE_PREEMPT_RCU changes choice state # # configuration written to .config # Using /home/wyl/NVMP/sdk/soc/t31x/linux-3.10.14 as source for kernel GEN /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/Makefile CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh grep: scripts/../arch/x86/syscalls/syscall_32.tbl: No such file or directory CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h CC scripts/mod/devicetable-offsets.s GEN scripts/mod/devicetable-offsets.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost HOSTCC scripts/sortextable In file included from scripts/sortextable.c:162:0: scripts/sortextable.c: In function 'main': scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized] memset(relocs, 0, relocs_size); ^ scripts/sortextable.h:104:6: note: 'relocs_size' was declared here int relocs_size; ^ In file included from scripts/sortextable.c:160:0: scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized] memset(relocs, 0, relocs_size); ^ scripts/sortextable.h:104:6: note: 'relocs_size' was declared here int relocs_size; ^ Building modules, stage 2. MODPOST 3 modules make[5]: Leaving directory '/home/wyl/NVMP/sdk/soc/t31x/linux-3.10.14' touch /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/linux-ingenic_t31x/linux-3.10.14/.modules make -C image compile TARGET_BUILD= make[5]: Entering directory '/home/wyl/NVMP/nvmp/target/linux/ingenic/image' make[5]: 'compile' is up to date. make[5]: Leaving directory '/home/wyl/NVMP/nvmp/target/linux/ingenic/image' make[4]: Leaving directory '/home/wyl/NVMP/nvmp/target/linux/ingenic' make[3]: Leaving directory '/home/wyl/NVMP/nvmp/target/linux' make[2]: Leaving directory '/home/wyl/NVMP/nvmp' make[2]: Entering directory '/home/wyl/NVMP/nvmp' find /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic -type d | xargs -r chmod 0755 rm -rf /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic make[2]: Leaving directory '/home/wyl/NVMP/nvmp' make[2]: Entering directory '/home/wyl/NVMP/nvmp' make[3]: Entering directory '/home/wyl/NVMP/nvmp/package/toolchain' rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc mkdir -p /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc for file in ./lib/ld-uClibc* ./lib/lib{c,uClibc}{-*.so,.so.*} ./lib/lib{crypt,dl,m,rt}{-*.so,.so.*}; do dir=`dirname $file` ; install -d -m0755 /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc/$dir ; cp -fpR /home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/$file /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc/$dir/ ; done ; exit 0 cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/ld-uClibc*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libc-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libc.so.*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libuClibc-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libuClibc.so.*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libcrypt-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libcrypt.so.*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libdl-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libdl.so.*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libm-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libm.so.*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/librt-*.so': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/librt.so.*': No such file or directory SHELL= /home/wyl/NVMP/nvmp/staging_dir/host/bin/flock /home/wyl/NVMP/nvmp/tmp/.root-copy.flock -c 'cp -fpR /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc/. /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/' rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libc touch /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp/.libc_installed rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc mkdir -p /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc for file in ./lib/libgcc_s.so.*; do dir=`dirname $file` ; install -d -m0755 /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc/$dir ; cp -fpR /home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/$file /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc/$dir/ ; done ; exit 0 cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libgcc_s.so.*': No such file or directory SHELL= /home/wyl/NVMP/nvmp/staging_dir/host/bin/flock /home/wyl/NVMP/nvmp/tmp/.root-copy.flock -c 'cp -fpR /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc/. /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/' rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libgcc touch /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp/.libgcc_installed WARNING: skipping libssp -- package not selected rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp mkdir -p /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp for file in ./usr/lib/libstdc++.so.*; do dir=`dirname $file` ; install -d -m0755 /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp/$dir ; cp -fpR /home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/$file /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp/$dir/ ; done ; exit 0 cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./usr/lib/libstdc++.so.*': No such file or directory SHELL= /home/wyl/NVMP/nvmp/staging_dir/host/bin/flock /home/wyl/NVMP/nvmp/tmp/.root-copy.flock -c 'cp -fpR /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp/. /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/' rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libstdcpp touch /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp/.libstdcpp_installed rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread mkdir -p /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread for file in ./lib/libpthread{*.so*,.so.*}; do dir=`dirname $file` ; install -d -m0755 /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread/$dir ; cp -fpR /home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/$file /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread/$dir/ ; done ; exit 0 cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libpthread*.so*': No such file or directory cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/libpthread.so.*': No such file or directory SHELL= /home/wyl/NVMP/nvmp/staging_dir/host/bin/flock /home/wyl/NVMP/nvmp/tmp/.root-copy.flock -c 'cp -fpR /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread/. /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/' rm -rf /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/tmp-libpthread touch /home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/root-ingenic/stamp/.libpthread_installed WARNING: skipping librt -- package not selected WARNING: skipping libgfortran -- package not selected WARNING: skipping ldd -- package not selected WARNING: skipping ldconfig -- package not selected make[3]: Leaving directory '/home/wyl/NVMP/nvmp/package/toolchain' make[3]: Entering directory '/home/wyl/NVMP/nvmp/package/hotplug2' CFLAGS="-Os -pipe -march=mips32r2 -g -fgnu89-inline -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/include -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/include -I/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/usr/include " CXXFLAGS="-Os -pipe -march=mips32r2 -g -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/include -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/include -I/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/usr/include " LDFLAGS="-L/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/lib -L/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/lib/nvmp/libs -L/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/lib -L/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/usr/lib -L/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/lib " make -j1 -C /home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/hotplug2-201/. AR=mips-linux-gnu-ar AS="mips-linux-gnu-gcc -c -Os -pipe -march=mips32r2 -g -fgnu89-inline" LD=mips-linux-gnu-ld NM=mips-linux-gnu-nm CC="mips-linux-gnu-gcc" GCC="mips-linux-gnu-gcc" CXX="mips-linux-gnu-g++" RANLIB=mips-linux-gnu-ranlib STRIP=mips-linux-gnu-strip OBJCOPY=mips-linux-gnu-objcopy OBJDUMP=mips-linux-gnu-objdump SIZE=mips-linux-gnu-size CROSS="mips-linux-gnu-" ARCH="mips" COPTS="-Os -pipe -march=mips32r2 -g -fgnu89-inline" STATIC_WORKER="fork" ; make[4]: Entering directory '/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/hotplug2-201' mips-linux-gnu-gcc -Os -pipe -march=mips32r2 -g -fgnu89-inline -DSTATIC_WORKER=1 -c -o hotplug2.o hotplug2.c In file included from hotplug2.c:1:0: hotplug2.h:3:20: fatal error: signal.h: No such file or directory compilation terminated. <builtin>: recipe for target 'hotplug2.o' failed make[4]: *** [hotplug2.o] Error 1 make[4]: Leaving directory '/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/hotplug2-201' Makefile:69: recipe for target '/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/hotplug2-201/.built' failed make[3]: *** [/home/wyl/NVMP/nvmp/build_dir/target-mips-openwrt-linux-uclibc-c510wv1/hotplug2-201/.built] Error 2 make[3]: Leaving directory '/home/wyl/NVMP/nvmp/package/hotplug2' package/Makefile:105: recipe for target 'package/hotplug2/compile' failed make[2]: *** [package/hotplug2/compile] Error 2 make[2]: Leaving directory '/home/wyl/NVMP/nvmp' package/Makefile:101: recipe for target '/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/stamp/.package_compile' failed make[1]: *** [/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/stamp/.package_compile] Error 2 make[1]: Leaving directory '/home/wyl/NVMP/nvmp' /home/wyl/NVMP/nvmp/include/toplevel.mk:277: recipe for target 'world' failed make: *** [world] Error 2
08-20
<think>我们正在处理一个OpenWrt编译错误。错误信息显示在编译hotplug2包时失败,具体是hotplug2.c包含signal.h头文件时失败,提示"No such file or directory"。 从日志中可以看出,整个编译过程在设置工具链和准备环境后,在编译hotplug2时出错。 分析可能的原因: 1. 工具链路径设置不正确,导致编译器找不到标准库的头文件。 2. 工具链本身不完整,缺少头文件。 3. 编译环境中的头文件路径没有被正确包含。 观察日志,在编译hotplug2之前,有一个步骤是复制工具链中的库文件到目标根目录,但是出现了很多“cannot stat”的错误,例如: cp: cannot stat '/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/./lib/ld-uClibc*': No such file or directory 这表明工具链的路径可能不正确,或者工具链没有安装在预期的位置。 另外,在编译hotplug2时,使用的编译器是mips-linux-gnu-gcc,而工具链的路径是../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit,这个路径下应该包含mips-linux-gnu-gcc等工具。 但是,在复制库文件时,它试图从工具链的libc/uclibc目录下复制,但该目录下似乎没有所需的文件。 因此,问题可能在于工具链的安装或配置不正确。 解决方案步骤: 1. 确认工具链路径:检查/home/wyl/NVMP/sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc目录是否存在,以及该目录下是否有lib和usr/lib等目录,以及所需的库文件。 2. 如果工具链路径正确,但文件缺失,可能需要重新安装或下载工具链。 3. 如果工具链路径不正确,需要检查OpenWrt的配置,确保工具链路径设置正确。 另外,在编译hotplug2时,使用的头文件路径是通过-I选项指定的,包括: -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/usr/include -I/home/wyl/NVMP/nvmp/staging_dir/target-mips-openwrt-linux-uclibc-c510wv1/include -I/home/wyl/NVMP/nvmp/../sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/usr/include 因此,如果signal.h在工具链的usr/include目录下存在,那么应该能被找到。如果不存在,则说明工具链不完整。 建议: 1. 检查工具链的usr/include目录下是否有signal.h文件。 2. 确保在配置OpenWrt时,已经正确设置了工具链路径。 由于错误发生在package/hotplug2的编译过程中,我们可以尝试单独进入该包的目录进行编译,以便更详细地查看错误。 但是,从整体日志看,之前复制工具链库文件时已经出现大量错误,因此问题很可能出在工具链的安装上。 重新安装或检查工具链可能是必要的。 此外,注意错误开头有一条: ERROR: please fix package/tp_package/lte/Makefile - see logs/package/tp_package/lte/dump.txt for details 这可能是另一个问题,但当前编译失败是由hotplug2引起的,不过建议也检查一下这个错误。 总结:主要问题在于工具链的库和头文件缺失,导致编译hotplug2时找不到signal.h。 因此,解决步骤: 1. 检查工具链的完整性,特别是include和lib目录。 2. 确认OpenWrt配置中工具链路径正确。 3. 如果工具链不完整,重新安装工具链。 4. 修复package/tp_package/lte/Makefile中的错误(如果有必要)。 注意:在重新安装工具链后,可能需要清理并重新编译。</think>根据提供的编译日志,错误发生在编译 `hotplug2` 包时,具体原因是找不到 `signal.h` 头文件,导致编译失败。以下是关键问题分析和解决方案: ### 错误原因分析 1. **头文件缺失** `hotplug2.c` 包含 `signal.h` 时失败(`fatal error: signal.h: No such file or directory`),表明工具链的标准库头文件未正确安装或路径配置错误。 2. **工具链问题** 日志中多次出现 `cp: cannot stat ...` 错误(如 `libc.so`、`libgcc_s.so` 等文件复制失败),说明工具链的库文件未被正确复制到目标目录,可能因为: - 工具链路径配置错误 - SDK 中的工具链不完整或损坏 - 环境变量未正确设置 3. **依赖链断裂** 在 `package/toolchain` 阶段,WARNING 提示跳过了 `libssp`、`librt` 等关键依赖,可能导致后续编译环境不完整。 ### 解决方案 #### 步骤 1: 验证工具链完整性 检查 SDK 中的工具链路径是否存在且完整: ```bash ls /home/wyl/NVMP/sdk/soc/t31x/uclibc-toolchain-0.9.33/mips-gcc472-glibc216-64bit/mips-linux-gnu/libc/uclibc/usr/include/signal.h ``` 若文件不存在,需重新安装或修复 SDK 工具链。 #### 步骤 2: 修复 OpenWrt 配置 1. **检查 `package/tp_package/lte/Makefile`** 根据初始错误提示修复该文件(参考 `logs/package/tp_package/lte/dump.txt`)。 2. **确认目标配置文件** 确保 `product_config/c510wv1/buildams.config` 存在,或检查路径配置: ```bash cat /home/wyl/NVMP/nvmp/product_config/c510wv1/buildams.config ``` #### 步骤 3: 清理并重编译 1. 清理编译缓存: ```bash make clean ``` 2. 单独编译 `hotplug2` 测试: ```bash make package/hotplug2/compile V=s ``` #### 步骤 4: 检查环境变量 确认 `staging_dir` 中的头文件路径是否被正确引用: ```bash grep -r "signal.h" /home/wyl/NVMP/nvmp/staging_dir/target-mips-*/usr/include/ ``` 若以上步骤无效,考虑重新部署 SDK 或更新工具链。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值