W872529868 发表于 2021-10-21 02:38:52

如何完善buildroot构架出来的根文件系统的库?

参考“【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2”的“第A1章 Buildroot根文件系统构建”构建出来的根文件系统无法运行.net。使用其他根文件系统能正常运行,通过ldd命令得到以下库
debian@npi:/opt/dotnet$ ldd dotnet
      linux-vdso.so.1 (0x7efeb000)
      libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76f7b000)
      libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76f68000)
      libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76e5d000)
      libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76de2000)
      libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76db9000)
      libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76cbf000)
      /lib/ld-linux-armhf.so.3 (0x76fbd000)

请问这些库在buildroot里要如何添加?选择哪个选项?
自己构建出来的根文件系统没有 “ldconfig” 命令无法查看已经安装的库。


望各位老师指点一二,谢谢。

azeng 发表于 2021-10-21 08:28:26

buildroot不是可以选择binutils工具的嘛,编译进去就可以读取二进制文件信息啊

W872529868 发表于 2021-10-21 10:44:17

azeng 发表于 2021-10-21 08:28
buildroot不是可以选择binutils工具的嘛,编译进去就可以读取二进制文件信息啊 ...

我刚学linux不是很明白您说的是什么意思,我现在发现构建出来的根文件系统缺少库,要选择buildroot那些选项才能加上这些库?

azeng 发表于 2021-10-21 14:18:21

W872529868 发表于 2021-10-21 10:44
我刚学linux不是很明白您说的是什么意思,我现在发现构建出来的根文件系统缺少库,要选择buildroot那些选 ...

你不是会用buildroot了吗?menuconfig里选上binutils然后再构建,用binutils里的readelf命令看一下依赖

W872529868 发表于 2021-10-21 15:27:49

azeng 发表于 2021-10-21 14:18
你不是会用buildroot了吗?menuconfig里选上binutils然后再构建,用binutils里的readelf命令看一下依赖 ...

您的意思是用readelf查看所需的依赖吗?好像和ldd命令读出来的是一样的。

# readelf -ddotnet

Dynamic section at offset 0xbcd8 contains 33 entries:
Tag      Type                         Name/Value
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x00000001 (NEEDED)                     Shared library:
0x0000000c (INIT)                     0x2274
0x0000000d (FINI)                     0x8ec8
0x00000019 (INIT_ARRAY)               0x1bc78
0x0000001b (INIT_ARRAYSZ)               32 (bytes)
0x0000001a (FINI_ARRAY)               0x1bc98
0x0000001c (FINI_ARRAYSZ)               4 (bytes)
0x6ffffef5 (GNU_HASH)                   0x1d4
0x00000005 (STRTAB)                     0xb20
0x00000006 (SYMTAB)                     0x220
0x0000000a (STRSZ)                      4212 (bytes)
0x0000000b (SYMENT)                     16 (bytes)
0x00000015 (DEBUG)                      0x0
0x00000003 (PLTGOT)                     0x1be00
0x00000002 (PLTRELSZ)                   864 (bytes)
0x00000014 (PLTREL)                     REL
0x00000017 (JMPREL)                     0x1f14
0x00000011 (REL)                        0x1dd4
0x00000012 (RELSZ)                      320 (bytes)
0x00000013 (RELENT)                     8 (bytes)
0x00000018 (BIND_NOW)
0x6ffffffb (FLAGS_1)                  Flags: NOW PIE
0x6ffffffe (VERNEED)                  0x1cb4
0x6fffffff (VERNEEDNUM)               6
0x6ffffff0 (VERSYM)                     0x1b94
0x6ffffffa (RELCOUNT)                   16
0x00000000 (NULL)                     0x0

W872529868 发表于 2021-10-23 12:09:14

自己顶一下,别沉。

dukelec 发表于 2021-10-23 13:13:16

W872529868 发表于 2021-10-23 12:09
自己顶一下,别沉。

在 buildroot 環境同樣用 ldd 查看它缺少哪些 so 庫,然後看下 buildroot menuconfig 裡面能不能找到並選上缺失的庫

實在不行,從其它文件系統,把對應的 so 直接拷貝過來,也是一種方案

W872529868 发表于 2021-10-23 16:58:38

dukelec 发表于 2021-10-23 13:13
在 buildroot 環境同樣用 ldd 查看它缺少哪些 so 庫,然後看下 buildroot menuconfig 裡面能不能找到並選 ...

感谢您的回复,我刚学linux没多久有很多基础的知识还不太清楚。

您说的“在 buildroot 環境同樣用 ldd 查看它缺少哪些 so 庫”是指什么?

目前缺少 libstdc++.so.6,我在别人的根文件系统上复制了一份libstdc++.so.6.0.25,建立软连接之后,.net core的运行时部分功能能正常使用了。

在buildroot 搜索(在 make menuconfig 内的搜索功能 )并没有找到“libstdc++.so.6.0.25”的库,也可能是我搜索的关键词不对,我现在想知道,是否有方法查到“libstdc++.so.6”在buildroot 有没有?是哪个选项?
我的猜测是有的,但是我不知道是哪个选项?如何查出来。

亦或者,在哪些网站上有这类库下载?总不能找别人做好的根文件系统内找吧。

dukelec 发表于 2021-10-23 17:44:50

本帖最后由 dukelec 于 2021-10-23 17:54 编辑

W872529868 发表于 2021-10-23 16:58
感谢您的回复,我刚学linux没多久有很多基础的知识还不太清楚。

您说的“在 buildroot 環境同樣用 ldd...

抱歉,沒說清楚

「在 buildroot 環境」 是指: buildroot 編譯的 linux 系統

這個庫是基礎 C++ 庫,google 一下就能搜到解決方法:https://whycan.com/t_5401.html

W872529868 发表于 2021-10-23 22:59:25

dukelec 发表于 2021-10-23 17:44
抱歉,沒說清楚

「在 buildroot 環境」 是指: buildroot 編譯的 linux 系統


已解决,非常感谢。
页: [1]
查看完整版本: 如何完善buildroot构架出来的根文件系统的库?