Uboot 交叉编译器的安装 安装包 --> /home/tarena/workdir/arm-linux-gcc 解压 $ tar xvf arm-cortex_a9-eabi-4.7-eglibc- 2.18.tar.gz 解压得到 文件夹 arm-cortex_a9-eabi-4.7-eglibc-2.18 $ mv arm-cortex_a9-eabi-4.7-eglibc-2.18 arm-linux-gcc
命令执行完成后会在当前目录多一个eglibc-版本的文件夹,比如我的机器是glibc-2.19,则下载的目录为eglibc-2.19 0x02 使用 在gdb中需要设置源码搜索路径 directory /home/user/eglibc-2.19/nptl 再跟进libc中就会有源码了。
Ubuntu & Debian检查 ldd –version (1)Ubuntu受影响版本(https://launchpad.net/ubuntu/+source/eglibc): Ubuntu 12.04 Debian gibc受影响版本(https://security-tracker.debian.org/tracker/CVE-2015-0235),Debian 7LTS: 2.13-38+deb7u7等 eglibc (PTS) squeeze 2.11.3-4 vulnerable eglibc wheezy 2.13-38+deb7u6 vulnerable Debian gibc
ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19 Copyright (C) 2014 Free Software Foundation, Inc.
://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 binutils/ ) 3、 glibc 各个库作用介绍 ( http://www.cnblogs.com/cute/archive/2011/05/03/2035645.html ) 4、 uclibc eglibc glibc 之间的区别和联系 ( http://www.crifan.com/relation_between_uclibc_glibc_eglibc/ ) 5、 Glibc vs uClibc Differences
串口连接的波特率 电源的要求 TI家的,好像没有数据手册 串口的一些配置选项 串口时序 这Arduino得话,其实就是Linux上面的一个小APP,x86_64-pokysdk-linux-eglibc
所以其它项没有变化. cross-compile gcc版本 kernel header libc 指令集 fs kernel hello.c编译执行情况 arm-buildroot-gcc 4.9.3 3.6.6 eglibc arm Y N N arm-buildroot-gcc 4.9.3 3.2.x eglibc arm Y N Y arm-buildroot-gcc 4.9.3 3.6.6 uClibc arm Y N N arm-buildroot-gcc 4.9.3 3.2.x uClibc arm Y N Y arm-buildroot-gcc 4.9.3 3.6.6 eglibc thumb Y N N arm-buildroot-gcc 4.9.3 3.2.x eglibc thumb Y N Y arm-linaro-gcc 4.9.4 4.0.0 eglibc thumb N Y N 由上知buildroot自制的arm-buildroot-gcc
tinycolinux live hd一体包后继续: 组建bootstrap toolchain ----- 以下tcz默认全是4.x的,从4.x的compiletc.tcz的meta包的dep中提取而来,以下底部部分eglibc_base-dev unsquashfs -f -d / /mnt/cobd0/tce/optional/file.tcz sudo unsquashfs -f -d / /mnt/cobd0/tce/optional/eglibc_base-dev.tcz
检查已安装的GLIBC版本: ldd --version 输出将是这样的: ldd (Ubuntu EGLIBC 2.17-93ubuntu4) 2.17 Copyright (C) 2012 Free
对于不同的系统,也有着不同的C库,比如针对Linux桌面环境,有glibc或者eglibc或者uClibc等等。 对于嵌入式Linux,可以选择eglibc或者uClibc,对于没有任何操作系统或者RTOS来说,可以使用newlib,甚至可以不使用。
4.9.x -> External toolchain kernel headers series = 4.1.x -> External toolchain C library = glibc/eglibc
(而我此处的eglibc 2.17,和那人的glibc-2.16.0,都是需要支持c11的gcc的) 所以此处想要去搞清楚,什么版本的,哪个版本的,gcc,才支持c11。
弱符号引用原始内存管理函数:使用__attribute__((weak))定义四个弱符号引用glibc/eglibc中的内存管理函数。 但是在glibc和eglibc中,dlsym函数内部可能会调用calloc函数。 __libc_calloc等函数被声明为弱符号,这是为了避免与glibc或eglibc中对这些函数的强符号定义产生冲突。 如果是,那么说明glibc或eglibc没有定义这些函数,那就使用dlsym函数获取这些函数的地址。如果不是,那么说明glibc或eglibc已经定义了这些函数,那就直接使用那些定义。
弱符号引用原始内存管理函数:使用__attribute__((weak))定义四个弱符号引用glibc/eglibc中的内存管理函数。 但是在glibc和eglibc中,dlsym函数内部可能会调用calloc函数。 __libc_calloc等函数被声明为弱符号,这是为了避免与glibc或eglibc中对这些函数的强符号定义产生冲突。 如果是,那么说明glibc或eglibc没有定义这些函数,那就使用dlsym函数获取这些函数的地址。如果不是,那么说明glibc或eglibc已经定义了这些函数,那就直接使用那些定义。
"- " wrap_bad "CONFIG_LEGACY_VSYSCALL_NONE" 'enabled' echo " $(wrap_color '(containers using eglibc
我们选用2.x repos的make.tcz(3.81版,为什么不使用3.x的make 382接下来会涉及到)和选用3.x repos的gcc443 32位(为什么不用4.x的gcc471:因为4.x后采用eglibc
POSIX 标准通常通过 C library(libc)来实现,比如 glibc、musl、eglibc。
version 为 6.x 修改 External toolchain kernel headers series 为 3.5.x 修改 External toolchain C library 为 glibc/eglibc