首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏赤道企鹅的博客

    uClibc部分源码总结固件利用思路的变化

    0x01 何为uClibc? 面向百度百科的废话 uClibc 是一个面向嵌入式Linux系统的小型的C标准库。 最初uClibc是为了支持uClinux而开发,这是一个不需要内存管理单元的Linux版本,因此适合于微控制器系统。 uClibc比一般用于Linux发行版的C库GNU C Library (glibc)要小得多,glibc目标是要支持最大范围的硬件和内核平台的所有C标准,而uClibc专注于嵌入式Linux.很多功能可以根据空间需求进行取舍 好在uClibc没有傻大笨glibc的各种检查,利用思路较为简单明确。 0x02 内存管理器 关于uClibc利用分析首当其冲的就是malloc和free等内存管理函数的实现。 它就是把早期 glibc 的 dlmalloc 移植到了 uClibc中。

    92810编辑于 2022-08-01
  • 嵌入式系统基础库:glibc vs uclibc 深度解析

    嵌入式系统基础库:glibc vs uclibc 深度解析 一、什么是C库?为什么嵌入式系统需要特殊选择? 想象一下,你要建房子: glibc = 专业施工队,工具齐全但队伍庞大 uclibc = 精简施工队,只带必要工具,灵活高效 在嵌入式系统中,资源(内存、存储)非常宝贵,所以需要更精巧的“工具包”。 二、两大主角详细对比 详细对比表格 特性维度 glibc (GNU C Library) uclibc (μClibc) 通俗比喻 设计目标 完整、标准兼容、功能丰富 小巧、嵌入式优化、节省资源 瑞士军刀 功能组件对比 文件操作组件对比: ┌─────────────────┬─────────────────┐ │ glibc │ uclibc │ ├─────── │ └───┬───┘ └───┬───┘ │ │ ┌───▼───┐ ┌───▼───┐ │ glibc │ │uclibc

    15710编辑于 2026-02-02
  • 来自专栏嵌入式、安防、流媒体、AI分析

    【君正T31学习教程】002Toolchain使用说明

    ISVP中的Toolchain版本信息如下:gcc版本:4.7.2libc版本: glibc版本:2.16 uclibc版本:0.9.33.2-nptl1. 如何进行glibc和uclibc编译ISVP的toolchain包含了glibc和uclibc,因此基于glibc或者uclibc的程序均可使用此toolchan进行编译。 libc即为glibcuclibc程序编译方法:C_FLAGS+=-muclibc CXX_FLAGS+=-muclibc,LD_FLAGS+=-muclibcr2.3.3版本之后的Toolchain,uclibc 程序可以使用mips-linux-uclibc-gnu-XXX的方式进行编译,不需要添加-muclibc的CFLAG及LDFLAG。

    1.5K20编辑于 2022-11-03
  • 来自专栏嵌入式、安防、流媒体、AI分析

    【君正T31学习教程】002Toolchain使用说明

    ISVP中的Toolchain版本信息如下: gcc版本:4.7.2 libc版本: glibc版本:2.16 uclibc版本:0.9.33.2-nptl 1. 如何进行glibc和uclibc编译 ISVP的toolchain包含了glibc和uclibc,因此基于glibc或者uclibc的程序均可使用此toolchan进行编译。 glibc程序编译方法:默认link的libc即为glibc uclibc程序编译方法:C_FLAGS+=-muclibc CXX_FLAGS+=-muclibc,LD_FLAGS+=-muclibc r2.3.3版本之后的Toolchain,uclibc程序可以使用mips-linux-uclibc-gnu-XXX的方式进行编译,不需要添加-muclibc的CFLAG及LDFLAG。

    1.1K20编辑于 2023-01-04
  • 来自专栏FreeBuf

    DNS曝高危漏洞,影响数百万物联网设备

    近日,Nozomi Networks发出警告,uClibc库的域名系统 (DNS) 组件中存在一个高危漏洞,编号为CVE-2022-05-02,该漏洞将影响所有版本uClibc-ng库的域名系统(DNS ),因此,数百万台使用uClibc库的物联网设备都也将受到影响。 资料显示,uClibc库专门为OpenWRT设计的一个分支,OpenWRT 是用于各种关键基础设施部门的路由器的通用操作系统。 研究人员分析了可执行文件,发现创建DNS请求的问题出现在C标准库uClibc 的0.9.33.2版本。 Nozomi报告中写到,研究人员通过源代码审查发现,uClibc库通过调用位于源文件“/libc/inet/resolv.c”中的内部“__dns_lookup”函数来实现DNS请求。

    60020编辑于 2022-06-08
  • 来自专栏Rust语言学习交流

    openwrt的rust支持

    ( r"cargo:rustc-link-search={}/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib", staging_dir target = "mipsel-unknown-linux-gnu" [target.mipsel-unknown-linux-gnu] linker = "mipsel-openwrt-linux-uclibc-gcc

    1.9K40发布于 2021-06-16
  • 来自专栏python3

    移植python到小米路由器记录。

    切换到python目录下,导出编译环境变量 export PATH=$PAHT:~/openwrt/staging_dir/toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc 于是翻uClibc的代码,发现这个变量是通过一个__UCLIBC_HAS_XLOCALE__宏来控制的,觉得肯定是编译uClibC有开关,于是用find命令终于在 toolchain/uClibc/config -0.9.33.2/common文件找到了这个配置UCLIBC_HAS_XLOCALE,把这个开关打开 UCLIBC_HAS_XLOCALE=y 重新编译openwrt,这里需要运行make dirclean

    2.7K10发布于 2020-01-08
  • 来自专栏仁扬笔记

    Linux下手工编译libiconv库的小问题

    defined(__UCLIBC__) && ! defined(__UCLIBC__) && !

    67700编辑于 2023-06-19
  • 来自专栏全栈程序员必看

    linux rootfs制作_pdf镜像翻转设置

    在编译目录的osdev/pub/下找到rootfs_uclibc.tgz解压开 按照上节和本节验证成功的部署这个rootfs 手工制作rootfs.jffs2镜像,再烧录测试即可 osdrv /pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2 注意 1).这里名字叫rootfs_uclibc_64k.jffs2 2).这句命令要在SDK包的顶层执行,因为是有绝对路径的 3).部署ko和usr中的lib 4).这里的64K是指block,

    6.4K30编辑于 2022-11-08
  • 来自专栏人人都是极客

    Linux 启动时间优化实战,2.41 秒启动应用!

    musl vs uClibc Buildroot 里有 3 种 C库可以选择:glibc、musl、uClibc,这里我们只比较后面 2 种比较小巧的库。 uClibc:570 KB (-16 %)。 uClibc 节省了 110 KB,我们选择 uClibc。 2、优化应用程序 我们可以通过 .

    4.3K50编辑于 2022-05-05
  • 来自专栏后场技术

    交叉编译概念详解

    各个库作用介绍 ( http://www.cnblogs.com/cute/archive/2011/05/03/2035645.html ) 因为嵌入式环境的资源及其紧张,所以现在除了 glibc 外,还有 uClibc 和 eglibc 可以选择,三者的关系可以参见这两篇文章: uclibc eglibc glibc 之间的区别和联系 ( http://www.crifan.com/relation_between_uclibc_glibc_eglibc / ) Glibc vs uClibc Differences ( https://www.uclibc.org/downloads/Glibc_vs_uClibc_Differences.txt ) eglibc glibc 之间的区别和联系 ( http://www.crifan.com/relation_between_uclibc_glibc_eglibc/ ) 5、 Glibc vs uClibc Differences ( https://www.uclibc.org/downloads/Glibc_vs_uClibc_Differences.txt ) 6、交叉编译链下载地址 http:/

    5.5K10发布于 2020-09-03
  • 来自专栏琦小虾的Binary

    交叉编译学习笔记(二)——交叉编译器的命名规则

    (3) uclibc uclibc,是c库中的一种。 针对上述gnu, eabi, uclibc,对应的常见组合的含义为: gnu = glibc + oabi gnueabi = glibc + eabi uclibc = uclibc + oabi

    5.8K50发布于 2018-01-02
  • 来自专栏二进制漏洞研究

    Safe-Linking机制分析

    contains 0x%lx\n", arbitrary_variable); } int main() { bypass_demo(); return 0; } 参考链接: 在uclibc-ng 中引入的补丁:https://gogs.waldemar-brodkorb.de/oss/uclibc-ng/commit/886878b22424d6f95bcdeee55ada72049d21547c

    1.5K60发布于 2020-06-12
  • 来自专栏漫流砂

    RCE 遇到受限 shell 的突破

    工具链完整性: 不同版本的GCC交叉编译工具链可能包含不同的组件集,如binutils(as、ld)、glibc/musl/uClibc等不同C库的适配。 目标环境中检查动态链接器 果然,目标系统上的动态链接器是 uClibc,我们尝试新建一个文件,命名为 /lib/ld-linux.so.3 ,之后看看我们的程序在这前后执行有没有什么不同 问题原因找到了 6) 编译 uClibc 还是编译 uClibc 吧,之后动态链接 https://uclibc.org/ 我们也选择 0.9.32.1 版本 # 下载 uClibc wget https://uclibc.org /downloads/uClibc-0.9.32.1.tar.xz # 解压 tar -xf uClibc-0.9.32.1.tar.xz # 配置 make menuconfig Target 官网,发现了这个 https://uclibc.org/toolchains.html 这里面说要编译 GNU binutils、GCC、uClibc 形成一个工具链,在后面我们发现了一个好东西 ——

    3.1K10编辑于 2024-03-22
  • 来自专栏全栈程序员必看

    buildroot 树莓派_树莓派忘记root密码

    下载源码 wget https://buildroot.uclibc.org/downloads/buildroot-2016.11.2.tar.gz 解压 tar -xvf buildroot-2016.11.2

    1.3K20编辑于 2022-11-07
  • 来自专栏老高的技术博客

    小米路由器mini折腾之远程下载篇

    小米路由器mini刷了Pandorabox后还是可以使用迅雷的远程下载的,步骤如下: 移步至论坛下载安装程序,贴子里编译出的版本很多,对于mini应该下载 xware_mipsel_32_uclibc

    1.1K20编辑于 2022-12-28
  • 来自专栏花狗在Qt

    gcc报错:terminate called after throwing an instance of ‘std::regex_error‘ what(): regex

    defined(__UCLIBC__) && !

    2.7K30编辑于 2022-05-09
  • 来自专栏全栈程序员必看

    glib和glibc_libc.so.6 version GLIBC_2.14

    Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。 嵌入式行业里还常用 uClibc ,是一个迷你版的 libc 。 【yasi】 libc, glibc在一个层次,都是C的标准实现库,是操作系统级别的基石之一。

    2.1K50编辑于 2022-09-20
  • 来自专栏旅途散记

    听GPT 讲Rust源代码--compiler(25)

    /spec/linux_uclibc_base.rs 文件是用来配置Rust编译器在Linux平台上针对uclibc库的编译规则和特性的文件。 uclibc库时的特性和相关配置。 定义了一些Rust编译器特定的编译选项,以确保生成的二进制文件能在uclibc环境中正确运行。 如果目标配置中包含了 linux-uclibc 字符串,编译器将使用该文件中的配置信息进行编译。 使用该文件中配置的特性和选项,可以确保生成的二进制文件能在uclibc环境中正确运行。 总结:rust/compiler/rustc_target/src/spec/linux_uclibc_base.rs 文件用于定义Rust编译器在Linux平台上使用uclibc库时的配置和特性。

    49010编辑于 2024-04-01
  • 来自专栏轩辕镜像

    BUSYBOX Docker 容器化部署指南

    作为Docker容器的基础镜像,BusyBox具有以下优势:极小的镜像体积,加速部署和传输过程完整的基础命令集,满足大多数容器化应用需求多种libc变体支持(glibc、uclibc、musl),适应不同场景广泛的架构支持 通用场景,需要最新功能stable稳定版标签,对应1.36.1生产环境,追求稳定性glibc使用glibc库编译的版本需要glibc兼容性的应用musl使用musl库编译的静态版本追求最小体积和跨平台兼容性uclibc 使用uclibc库编译的版本嵌入式系统或资源受限环境如需指定特定版本,可使用类似1.37.0-glibc的标签格式,具体可参考BusyBox镜像标签页面:https://xuanyuan.cloud/r

    36810编辑于 2025-11-16
领券