搜索
bottom↓
回复: 9

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

[复制链接]

出0入0汤圆

发表于 2021-10-21 02:38:52 | 显示全部楼层 |阅读模式
参考“【正点原子】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” 命令无法查看已经安装的库。


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

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2021-10-21 08:28:26 | 显示全部楼层
buildroot不是可以选择binutils工具的嘛,编译进去就可以读取二进制文件信息啊

出0入0汤圆

 楼主| 发表于 2021-10-21 10:44:17 | 显示全部楼层
azeng 发表于 2021-10-21 08:28
buildroot不是可以选择binutils工具的嘛,编译进去就可以读取二进制文件信息啊 ...

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

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2021-10-21 15:27:49 | 显示全部楼层
azeng 发表于 2021-10-21 14:18
你不是会用buildroot了吗?menuconfig里选上binutils然后再构建,用binutils里的readelf命令看一下依赖 ...

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

# readelf -d  dotnet

Dynamic section at offset 0xbcd8 contains 33 entries:
  Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
0x00000001 (NEEDED)                     Shared library: [libm.so.6]
0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED)                     Shared library: [libc.so.6]
0x00000001 (NEEDED)                     Shared library: [ld-linux-armhf.so.3]
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

出0入0汤圆

 楼主| 发表于 2021-10-23 12:09:14 | 显示全部楼层
自己顶一下,别沉。

出615入1076汤圆

发表于 2021-10-23 13:13:16 来自手机 | 显示全部楼层
W872529868 发表于 2021-10-23 12:09
自己顶一下,别沉。

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

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

出0入0汤圆

 楼主| 发表于 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 有没有?是哪个选项?
我的猜测是有的,但是我不知道是哪个选项?如何查出来。

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

出615入1076汤圆

发表于 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

出0入0汤圆

 楼主| 发表于 2021-10-23 22:59:25 | 显示全部楼层
dukelec 发表于 2021-10-23 17:44
抱歉,沒說清楚

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

已解决,非常感谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 00:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表