【弹窗拦截源码】【粒度分析仪指标源码】【jdk调用c语言的源码】uclibc源码详解

时间:2024-12-29 19:00:50 编辑:linux 源码安装ruby 来源:兴趣部落源码安装

1.arm-linux-gcc 和 arm-elf-gcc 的区别
2.openWRT发展历程
3.openwrt是源码什么

uclibc源码详解

arm-linux-gcc 和 arm-elf-gcc 的区别

       åœ¨åŸºäºŽARM的嵌入式系统开发中,常常用到交叉编译的GCC工具链有两种:

       arm-linux-*和 arm-elf-*,两者区别主要在于使用不同的C库文件。arm-linux-*使用

       GNU的Glibc,而arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统

       çš„开发的C库newlib.Glibc。uClibc/uC-libc以及 newlib都是C语言库文件,只是所应

       ç”¨çš„领域不同而已,Glibc是针对PC开发的,uClibc/uC-libc是与Glibc API兼容的小型

       åŒ–C语言库,实现了Glibc部分功能。

       ã€€ã€€å…³äºŽuClibc/uC-libc的说明,详见如下:

       ã€€ã€€There are two libc libraries commonly used with uClinux. uC-libc and

       uClibc. They are quite different despite their similar names. Here is a

       quick overview of how they are different.

       ã€€ã€€uC-libc is the original library for uClinux. It was based on sources

       from the Linux- C library which was part of the ELKs project with m

       support added by Jeff Dionne and Kenneth Albanowski. It is a fairly complete

       libc implementation, however, some of the API's are a little non-standard

       and quite a few common libc routines are not present. Currently it has

       stable support for m, ColdFire and ARM (Non-MMU) architectures. It was

       primary design goal is to be small and light weight. It does try to conform

       to any standards, although its API tries to be compatible with most libcs,

       it is not always exactly the same.

       ã€€ã€€The uClinux distribution provides an environment that can compile using

       either uC-libc or uClibc depending on your needs. For m and Coldfire

       platforms it is generally better to chose uC-libc as it supports shared

       libraries and is the most commonly used libc for these CPUs. uClibc also

       works quite well with almost all platforms supported by the distribution.

       Which libc you choose to use will be decided by your requirements

       uClinux有两个经常使用的libc库:uC-libc和uClibc。虽然两者名字很相似,其实有差

       åˆ«ï¼Œä¸‹é¢å°±ç®€å•çš„介绍一下二者的不同之处。uC -libc是最早为uClinux开发的库,是

       Jeff Dionne和Kenneth Albanowski为在EKLs项目中支持m在Linux- C库源码

       ä¸Šç§»æ¤çš„。uC-libc是一个完全的libc实现,但其中有一些api是非标准的,有些libc的

       æ ‡å‡†ä¹Ÿæ²¡æœ‰å®žçŽ°ã€‚uC-libc稳定地支持 m,ColdFire和没有MMU的ARM。其主要设计

       ç›®æ ‡æ˜¯â€œå°â€ã€"è½»",并尽量与标准一致,虽然它的API和很多libc兼容,但是似乎并

       ä¸åƒå®ƒæœŸæœ›çš„那样和所有标准一致。

       uClibc就是为了解决这个问题从uC-libc中发展出来的。它的所有API都是标准的(正确

       çš„返回类型,参数等等),它弥补了uC-libc中没有实现的libc标准,现在已经被移植到

       å¤šç§æž¶æž„中。一般来讲,它尽量兼容glibc以便使应用程序用uClibc改写变的容易。

       uClibc能够在标准的 VM linux和uClinux上面使用。为了应用程序的简洁,它甚至可以

       åœ¨è®¸å¤šæ”¯æŒMMU的平台上被编译成共享库。Erik Anderson在uClibc背后做了很多的工

       ä½œã€‚uClibc支持许多系列的处理器:m,Coldfire,ARM,MIPS,v, x,

       i,Sparc,SuperH,Alpha,PowerPC和Hitachi 8。不断增加的平台支持显示uClibc

       èƒ½å¤Ÿå¾ˆå®¹æ˜“的适应新的架构。uClinux发行版提供了环境能够让你选择使用uC-libc或是

       uClibc编译。对于m和Coldfire平台来说,选择uC-libc还是稍微好一点,因为它

       æ”¯æŒå…±äº«åº“,而共享库是这些cpu经常使用的 libc.uClibc也几乎和所有的平台都能很

       å¥½çš„工作。选择哪种libc取决于你的需求。

       newlib 是一个用于嵌入式系统的开放源代码的C语言程序库,由libc和libm两个库组

       æˆï¼Œç‰¹ç‚¹æ˜¯è½»é‡çº§ï¼Œé€Ÿåº¦å¿«ï¼Œå¯ç§»æ¤åˆ°å¾ˆå¤šCPU结构上。newlib实现了许多复杂的功

       èƒ½ï¼ŒåŒ…括字符串支持,浮点运算,内存分配(如malloc)和I/O流函数(printf,fprinf()

       ç­‰ç­‰)。其中libc提供了c 语言库的实现,而libm提供了浮点运算支持。

       åœ¨ä¸ºARM交叉编译gcc编译器时,对gcc指定不同的配置选项时,使用的C语言库就不同,

       gcc编译器默认使用Glibc,也可以使用 uClibc/uC-libc(基本兼容Glibc API),当使用

       --with-newlib时,gcc编译器不使用Glibc。当没有交叉编译Glibc时,可以使用

       --with-newlib禁止连接Glibc而编译bootstrap gcc编译器。从gcc源目录下的

       config/arm中的t-linux和t-arm-elf中可以看出,不同的--target也影响gcc连接C语言

       åº“,t-linux(--target=arm-linux)默认使用Glibc,-arm-elf(--target=arm-elf)使用

       - Dinhibit_libc禁止连接Glibc,这时我们就可以使用newlib等其他C语言库编译GCCå·¥

       å…·é“¾ã€‚

       è™½ç„¶GCC工具链配置了不同的的C语言库,但由于这些C语言库都可以用来支持GCC,它们

       å¯¹æ ¸å¿ƒæ•°æ®çš„处理上不存在较大出入。因而arm-linux-* 和 arm-elf-*区别主要表现在

       C语言库的实现上,例如不同系统调用,不同的函数集实现,不同的ABI\启动代码以及

       ä¸åŒç³»ç»Ÿç‰¹æ€§ç­‰å¾®å°çš„差别。

       arm-linux-*和 arm-elf-*的使用没有一个绝对的标准,排除不同库实现的差异,gcc可

       ä»¥ç¼–译任何系统。arm-linux-*和 arm-elf-*都可以用来编译裸机程序和操作系统,只

       æ˜¯åœ¨éµå¾ªä¸‹é¢çš„描述时系统程序显得更加协调:

       arm-linux-*针对运行linux的ARM机器,其依赖于指定的C语言库Glibc,因为同样使用

       Glibc的linux而使得arm-linux-*在运行linux的ARM机器上编译显得更加和谐。

       arm-elf-*则是一个独立的编译体系,不依赖于指定的C语言库Glibc,可以使用newlib

       ç­‰å…¶ä»–C语言库,不要求操作系统支持,当其使用为嵌入式系统而设计的一些轻巧的C语

       è¨€åº“时编译裸机程序(没有linux等大型操作系统的程序),如监控程序,bootloader等

       èƒ½ä½¿å¾—系统程序更加小巧快捷。

       Linaro prebuilt toolchain does support both hard and soft floating

       point. You can get it from /linaro-toolchain-binaries/+milestone/. try: ./arm-linux-gnueabihf-gcc -print-multi-lib

       The default configure is --with-arch=armv7-a --with-tune=cortex-a9

       --with-fpu=vfpv3-d --with-float=hard --with-mode=thumb

       To use soft floating, you need options: -marm -march=armv4t -mfloat-abi=soft.

       In your case, please try to change -march=armv5 to "-march=armv4t"

       If you want to change to configure to cortex-a8 and armv5. You need

       * Change cortex-a9 to cortex-a8 in

       samples/linaro-arm-linux-gnueabihf/crosstool.config

       * Change armv4t to armv5 in

       contrib/linaro/patches/gcc/linaro-4.7-./multilib.patch,

       Then follow the instructions to rebuild the toolchain

       (contrib/linaro/doc/README.txt)

       BTW: crosstool-ng-linaro does not support multilib for eglibc. It uses

       the prebuilt sysroot from Ubuntu Precise. If it does not work for you,

       please use the latest crosstool-ng from http://crosstool-ng.org/.

openWRT发展历程

       OpenWRT的发展历程始于年1月,其起源可以追溯到Linksys提供的详解GPL源码和基于uclibc的buildroot项目,这个被称为“stable”版本的源码OpenWrt至今仍被许多项目所采用,如著名的详解Freifunk-Firmware和Sip@Home。

       到了年初,源码OpenWRT项目迎来了新的详解弹窗拦截源码开发者力量。几个月后,源码他们推出了首个“experimental”版本,详解这一版本与早期显著不同,源码它摒弃了Linksys的详解GPL源码,转而采用了buildroot2作为核心技术,源码实现了OpenWrt的详解全面模块化。这个版本使用了Linux标准发行的源码粒度分析仪指标源码2.4.内核源码,并添加了一系列补丁和网络驱动,详解增强了其功能。源码开发团队为OpenWrt增添了更多免费工具,允许用户直接将Image写入Flash(mtd),同时还支持无线功能和VLAN交换功能。这一版本被命名为“White Russian”,jdk调用c语言的源码标志着项目的一个重要里程碑。据记载,1.0版本大约在年底正式发布。

扩展资料

       OpenWrt的被描述为一个嵌入式设备的Linux发行版,而不是试图建立一个单一的,静态的易语言yy自动抢麦源码固件,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序通过使用包。对于开发人员,OpenWrt的弘历进出指标破解源码是框架来构建应用程序,而无需建立一个完整的固件左右;对于用户来说,这意味着完全定制的能力,从来没有预想的方式使用该设备。

openwrt是什么

       OpenWrt 是一个专为路由器设计的 Linux 发行版,主要用途是管理并疏导网络流量。此发行版的核心是基于 Linux 内核构建。

       简而言之,OpenWrt 是一种针对嵌入式设备的 Linux 发行版。与其他主流路由器固件如 dd-wrt、tomato 相比,OpenWrt 提供了高度可定制化,允许用户根据需求自定义配置,以适应各种应用需求。

       对于开发者而言,OpenWrt 提供了一个框架,便于构建应用程序,而无需开发一个完整的固件来支持。对于用户而言,这代表了无限的定制能力,能够以前所未有的方式利用设备。

       OpenWrt 项目始于年1月,首次版本基于 Linksys 提供的 GPL 源码及 uclibc 中的 buildroot 项目。这个版本被称为“稳定版”,至今仍有许多项目在使用,其中知名度较高的有 Freifunk-Firmware 和 Sip@Home。

搜索关键词:jdk源码怎么