Both libc.so.6 and libc.so exist in rootfs



我使用yocto生成了我的rootfs,并发生了有线的事情,libc.so.6和libc.so so so so so rootfs(/usr/lib/lib/libc.so and/so and/so中lib/libc.so.6)。但是它们是不同的对象(不是链接到一个对象),这会导致我与yocto sdk的编译失败。

我知道我的libc。

任何人可以帮我吗?

libc.so链接脚本,一个看起来像这样的小文本文件(在此包装以可读性):

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP (
  /lib/x86_64-linux-gnu/libc.so.6
  /usr/lib/x86_64-linux-gnu/libc_nonshared.a
  AS_NEEDED ( /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 )
)

它指示链接编辑器( ld,在构建过程中链接时被调用,即不是动态链接器)以首先在libc.so.6中查找符号,一个共享对象,然后在libc_nonshared.a中,如果找不到它,最后在动态加载器ld-linux-x86-64.so.2)。这用于实现某些功能,例如在较新版本的glibc,呼叫者启用函数 pthread_atfork(必须从静态上链接,因此将其放置在libc_nonshared.a而不是libc.so.6中)。链接器脚本通常由gccg++命令隐式调用,但偶尔您会看到包含-lc的命令行,然后访问libc.so脚本(当动态链接时)。

。 。

链接脚本仅在构建时间使用。如果您的图像包含诸如libsqlite3-dev之类的开发库,则有必要包括libc6-dev(或称为提供libc.so Linker脚本的包装的任何包装),因为libsqlite3-dev不适合在没有Glibc的新程序和共享对象的情况下使用。

<</p> <</p> <</p> <</p> <</p>

相关内容

最新更新