8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

尝试在 yocto 上构建 core-image-minimal。编译失败,原因是:错误:qemu-native-4.1.0-r0 do_compile:oe_runmake 失败

Gunter Abreu 2月前

127 0

在 poky 上首次尝试编译 core-image-minimal。`Build Configuration:BB_VERSION = \'1.44.0\'BUILD_SYS = \'x86_64-linux\'NATIVELSBSTRING ...

在 poky 上第一次尝试编译 core-image-minimal。


`Build Configuration:
BB_VERSION           = "1.44.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.0.4"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       = "<unknown>:<unknown>"`

编译期间出现错误并且编译失败:

`ERROR: qemu-native-4.1.0-r0 do_compile: oe_runmake failed
ERROR: qemu-native-4.1.0-r0 do_compile: Execution of '/home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/temp/run.do_compile.4889' failed with exit code 1:
make[1]: Entering directory '/home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/qemu-4.1.0/slirp'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/qemu-4.1.0/slirp'
  CXX     disas/nanomips.o
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make: *** [/home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/qemu-4.1.0/rules.mak:94: disas/nanomips.o] Error 1
make: *** Deleting file 'disas/nanomips.o'
WARNING: /home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/temp/run.do_compile.4889:1 exit 1 from 'exit 1'

ERROR: Logfile of failure stored in: /home/build/tmp/work/x86_64-linux/qemu-native/4.1.0-r0/temp/log.do_compile.4889`

**无法找到该问题的适当解决方案。是否存在我需要注意的版本不匹配?

提前致谢。**

我尝试安装 cmake,检查 g++ 版本。没有帮助。

帖子版权声明 1、本帖标题:尝试在 yocto 上构建 core-image-minimal。编译失败,原因是:错误:qemu-native-4.1.0-r0 do_compile:oe_runmake 失败
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Gunter Abreu在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 首先每个动态链接程序最重要的依赖就是链接器,所有的so库都必须和链接器的版本相匹配。

    让我们举一个简单的例子:我有一个新的 ubuntu 系统,我在其中运行一些程序(在我的情况下是 D 编译器 - ldc2)。我想在旧的 CentOS 上运行它,但由于较旧的 glibc 库,这是不可能的。我得到了

    ldc2-1.5.0-linux-x86_64/bin/ldc2: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ldc2-1.5.0-linux-x86_64/bin/ldc2)
    ldc2-1.5.0-linux-x86_64/bin/ldc2: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ldc2-1.5.0-linux-x86_64/bin/ldc2)
    

    我必须将所有依赖项从 ubuntu 复制到 centos。正确的方法如下:

    首先,让我们检查所有依赖项:

    ldd ldc2-1.5.0-linux-x86_64/bin/ldc2 
        linux-vdso.so.1 =>  (0x00007ffebad3f000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f965f597000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f965f378000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f965f15b000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f965ef57000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f965ec01000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f965e9ea000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f965e60a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f965f79f000)
    

    linux-vdso.so.1 不是一个真正的库,我们不必关心它。

    /lib64/ld-linux-x86-64.so.2 是链接器,linux使用它来将可执行文件与所有动态库链接起来。

    其余文件是真正的库,所有文件连同链接器都必须复制到 centos 中的某个地方。

    我们假设所有库和链接器都在'/mylibs'目录中。

    ld-linux-x86-64.so.2 - 我已经说过了 - 是链接器。它不是动态库,而是静态可执行文件。您可以运行它,并看到它甚至有一些参数,例如 --library-path(我将返回到它)。

    在Linux上,动态链接程序可能仅通过其名称启动,例如

    /bin/ldc2
    

    Linux 会将此类程序加载到 RAM 中,并检查为其设置了哪个链接器。通常在 64 位系统上,它是 /lib64/ld-linux-x86-64.so.2(在您的文件系统中,它是指向实际可执行文件的符号链接)。然后 Linux 运行链接器并加载动态库。

    您也可以稍微改变一下,做这样的技巧:

    /mylibs/ld-linux-x86-64.so.2 /bin/ldc2
    

    这是强制Linux使用特定链接器的方法。

    现在我们可以回到前面提到的参数--library-path

    /mylibs/ld-linux-x86-64.so.2 --library-path /mylibs /bin/ldc2
    

    它将运行 ldc2 并从 /mylibs 加载动态库。

    这是使用选定的(非系统默认的)库调用可执行文件的方法。

返回
作者最近主题: