首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 轻内核M核源码分析系列二十 Newlib C

    本文先学习下Newlib C的实现代码。 newlib是小型C库,针对posix接口涉及系统调用的部分,newlib提供一些需要系统适配的钩子函数,例如_exit(),_open(),_close(),_gettimeofday()等,操作系统适配这些钩子 ,就可以使用公版newlib工具链编译运行程序。 有关newlib的钩子函数调用过程下文专门分析下。 \newlib\libc\reent,函数_open_r定义在该文件夹的文件newlib-cygwin\newlib\libc\reent\openr.c里。

    31320编辑于 2025-05-29
  • 来自专栏技术杂记

    日志服务器(13)

    8.2-2018.08-i686-mingw32-arm-eabi.tar.xz gcc-arm-8.2-2018.08-i686-mingw32-arm-eabi.tar.xz.asc sysroot-newlib-arm -2018.08-arm-eabi.tar.xz sysroot-newlib-arm-2018.08-arm-eabi.tar.xz.asc AArch64 ELF bare-metal target 2018.08-i686-mingw32-aarch64-elf.tar.xz gcc-arm-8.2-2018.08-i686-mingw32-aarch64-elf.tar.xz.asc sysroot-newlib-arm -2018.08-aarch64-elf.tar.xz sysroot-newlib-arm-2018.08-aarch64-elf.tar.xz.asc x86_64 hosted cross compilers

    1.4K20发布于 2021-10-20
  • 来自专栏安富莱嵌入式技术分享

    《安富莱嵌入式周报》第259期:2022.03.28--2022.04.03

    设备网络:控制系统,监控系统,自动化系统: 蓝牙智能家居2022年将出货5.52亿台: 其中蓝牙定位技术和蓝牙照明是未来主要的驱动力: 2、开源C库Newlib执行流程分析 非常不错的博文 ,使用开源方案构建开环境的话,用newlib比较多,因为商用IDE都自带C库。 https://embeddedartistry.com/blog/2019/04/17/exploring-startup-implementations-newlib-arm/ 目录:

    40230编辑于 2022-05-10
  • 来自专栏游戏开发之旅

    Slua集成第三方库(一)

    defined(luaL_newlib)))//以防小于502版本的lua没有定义luaL_newlib # define luaL_newlib(L,l) (lua_newtable(L), luaL_register Test1}, {"Test2",Test2}, {NULL,NULL}, }; int luaopen_luatest(lua_State *L) //入口方法,编译时由这里进入 { luaL_newlib

    1.6K10发布于 2020-04-01
  • 来自专栏嵌入式iot

    riscv gcc工具链是如何被编译的

    对于嵌入式Linux,可以选择eglibc或者uClibc,对于没有任何操作系统或者RTOS来说,可以使用newlib,甚至可以不使用。 可以看到build-gcc-newlib-stage1和build-gcc-newlib-stage2。 riscv-gcc gcc主要的程序 riscv-gdb 通过外设接口,可以通过gdb调试 riscv-glibc 支持编译的程序在Linux运行的glibc库 riscv-newlib 支持编译的程序在 大概介绍一下: 该编译器支持两种libc库,支持rtos和barematel的newlib库和支持Linux的glibc。 默认使用make时,链接的是newlib库,使用make linux时,链接的是glibc。 同时由于riscv有着非常多的arch组合,可以编译单独的arch,比如 .

    2.6K40编辑于 2022-01-10
  • 来自专栏安富莱嵌入式技术分享

    《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

    AI-For-Beginners/ https://github.com/microsoft/generative-ai-for-beginners 课程目录: 当前已经发布的课程: 4、开源C库Newlib 执行流程分析 非常不错的博文,使用开源方案构建开环境的话,用newlib和libc比较多,因为商用IDE都自带C库。 https://embeddedartistry.com/blog/2019/04/17/exploring-startup-implementations-newlib-arm/ 目录: 5、讲述价值

    70710编辑于 2025-10-16
  • 来自专栏嵌入式iot

    D1 riscv芯片上运行rt-thread进行RVV性能评估

    分别代表rt-thread内置的内存拷贝函数,采用C语言进行实现,memcpy是newlib库函数的实现,里面会对riscv架构进行优化处理,csi_c906_memcpy则是采用向量操作,进行内存拷贝 结果如下: 显然,内存拷贝操作newlib中的memcpy性能是最佳的,而向量操作的memcpy反而其次,最差的是rt-thread的rt_memcpy。 这里的原因是newlib的memcpy的是经过优化后的,而vector memcpy也可能是优化的不好导致性能与newlib的memcpy相当。

    1.9K31编辑于 2022-03-04
  • 来自专栏RT1060开发

    AIoT应用创新大赛-用标准GNU GCC完成RT1060工程编译(纯VSCode开发)

    第一个错误是上图第4行:gcc找不到redlib.specs,这说明我使用的gcc版本(gcc version 10.3.1 20210824 (release))是不支持这个redlib编译配置文件的,支持的只有newlibnewlib_nano配置。 Switching-the-selected-C-library/m-p/473669 以及https://community.nxp.com/t5/LPCXpresso-IDE-FAQs/What-are-Redlib-and-Newlib 替换之后,c 标准库就被指定为newlib_nano库。接下来,需要把makefile里头文件目录从绝对路径修改为相对路径。 libcr_eabihelpers.a" "libgcc.a" ) 需要替换成 GROUP ( "libc_nano.a" "libm.a" "libgcc.a" ) 这是因为前面使用了newlib_nano

    1.4K190编辑于 2022-03-15
  • 来自专栏悟空被FFmpeg玩

    定制交叉编译环境-gcc

    disable-decimal-float --disable-libgomp --disable-libmudflap --disable-libssp --without-headers --with-newlib disable-decimal-float --disable-libgomp --disable-libmudflap --disable-libssp --without-headers --with-newlib

    2.7K50发布于 2019-03-05
  • 来自专栏安富莱嵌入式技术分享

    《安富莱嵌入式周报》第258期:2022.03.21--2022.03.27

    4、基于newlib和AVR Libc的轻量型C库Picolib https://github.com/picolibc/picolibc 搞GCC类开源全家桶IDE方案的对newlib都比较熟悉

    45530编辑于 2022-05-10
  • 来自专栏全志嵌入式那些事

    全志D1s开发板裸机开发之坏境搭建

    自带的 DOS 命令行、Powershell(在里面无法执行 make 命令) ② make\make-3.81.exe:make 工具 ③ toolchain\Xuantie-900-gcc-elf-newlib-mingw-V2.6.1 交叉工具链 把 开发板通用资料\05_开发配套工具\toolchain\Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-gdbtui-20230210.tar.gz 解压即可

    60910编辑于 2024-03-08
  • 来自专栏蓝天

    GCC 4.7相对4.6.x的改进点

    针对运行时库(libstdc++)的改进  实验性地支持新的ISO C++11标准: 增加了--enable-clocale=newlib配置选项。 用于无序关联容器的调试模式迭代器。

    55730发布于 2018-08-10
  • 来自专栏后端开发技术

    Lua与C语言接口编程实战指南:打造高性能、灵活的程序

    // 创建一张新的表,并预分配足够保存下数组 l 内容的空间 // luaL_newlibtable(L, l); // luaL_setfuncs(L, l, 0); luaL_newlib // 创建一张新的表,并预分配足够保存下数组 l 内容的空间 // luaL_newlibtable(L, l); // luaL_setfuncs(L, l, 0); luaL_newlib lecho}, {"again", lagain}, {NULL, NULL}, }; // 创建一张新的表,并预分配足够保存下数组 m 内容的空间 luaL_newlib lnew}, {NULL, NULL}, }; int luaopen_ud_c(lua_State *L) { // 创建一张新的表,并预分配足够保存下数组 l 内容的空间 luaL_newlib LUA_REGISTRYINDEX, "reg.c"); fprintf(stdout, "luaopen_reg1_c 注册表 reg.c\n"); } luaL_newlib

    43710编辑于 2025-07-15
  • 来自专栏鸿蒙开发笔记

    OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(一)

    移植架构上采用Board与SoC分离的方案,工具链Newlib C库与Musl C库可选,LiteOS-M内核编译采用gn结合Kconfig图形化配置等需求。 平滑切换方案,由于我们的工具链采用 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2自带newlib的C库,那么系统移植整体采用newlib的C库。 那么在内核的make menuconfig中选择newlib,如下图:malloc适配malloc适配参考 The Red Hat newlib C Library-malloc。 这种方法中,内存分配函数使用newlib中的。 首先,由于newlib中已经存在这些函数的符号,因此需要用到gcc的wrap的链接选项替换这些函数符号为内核的实现,内核的实现为 //kernel/liteos_m/kal/libc/newlib/porting

    71420编辑于 2025-06-26
  • 来自专栏技术让梦想更伟大

    NXP的S32K144如何移植FreeRTOS?

    configUSE_QUEUE_SETS 0 #define configUSE_TIME_SLICING 1 #define configUSE_NEWLIB_REENTRANT

    2.6K20编辑于 2022-09-10
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 移植案例与原理 - utils子系统之file文件操作部件

    close、read、write、unlink、stat、lseek等函数定义在kernel\liteos_m\kal\libc\musl\fs.c或kernel\liteos_m\kal\libc\newlib \porting\src\fs.c,这个取决于使用的是musl C库还是newlib C库。 file\src\hal_file.c) -> open/read/write/…(kernel\liteos_m\kal\libc\musl\fs.c或kernel\liteos_m\kal\libc\newlib

    29320编辑于 2025-06-13
  • 来自专栏嵌入式iot

    riscv gcc中添加custom自定义指令

    4.3 编译与测试 对于单独编译binutils,可以直接进入到build-binutils-newlib。 输入make -j8 && make install。 如果是第一次编译riscv-gnu-toolchain,则没有build-binutils-newlib,需要全部重新编译: .

    5.8K42发布于 2021-10-09
  • 来自专栏雨过天晴

    原 Golang 的跨平台交叉编译浅析

    有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib

    2.5K30发布于 2018-06-04
  • 来自专栏用户2442861的专栏

    linux动态库和静态库

    参考文章:http://pananq.com/index.php/page/3/ 七、动态库升级问题: 在动态链接库升级时, 不能使用cp newlib.so oldlib.so,这样有可能会使程序 core掉; 而应该使用: rm oldlib.so 然后 cp newlib.so oldlib.so 或者 mv oldlib.so oldlib.so_bak 然后 cp newlib.so oldlib.so 为什么不能用cp newlib.so oldlib.so ?

    14K20发布于 2018-09-20
  • 来自专栏orientlu

    lua 和 cpp 互调

    END }; // lua 中 require "xxx" // 对应调用 luaopen_xxx() int luaopen_mylualib(lua_State* L) { luaL_newlib , -2, "__index"); // set and pop metatable luaL_setfuncs(L, m_student_metatable, 0); luaL_newlib

    1.1K40发布于 2018-12-24
领券