URN Logo
UNIX Resources » Linux » China Linux Forum » CPU 与 编译器 » 5 » glibc newlib高手多指点,希望对我和以后的新手又帮助
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
glibc newlib高手多指点,希望对我和以后的新手又帮助
 
 
 
 
 
 
 
 
Subject: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: want_king    Posted: 2006-03-19 20:02    Length: 940 byte(s)
[Original] [Print] [Top]
除了内核以外,所有的程序都要或多或少的调用一些已有内核支持的标准函数;
glibc就是编译gcc要调用的标准C函数的库;
只是gcc要用的还是所有的标准函数没有研究过,有知道的请给个答案;

(因为版权的问题,很多标准C函数都是linus和后来的开发者开发的;我个人认为类似标准输出输入函数,因为和操作系统内核关系紧密,必然每个操作系统内核提供的不一样的实现方法,这部分不存在版权问题;版权问题主要集中在例如math这类函数,linus等主要针对这部分标准C函数进行重新构造,与标准输出输入等形成开源标准C函数库,即G libc;)

g++ 和libstdC++关系也类似gcc和glibc的关系;

目前出现了 newlib,是编译针对嵌入式系统开发的gcc的调用函数库;
和glibc有什么具体或者大概区别也请大家给点提示;

因为编译gcc一般都是在计算机内完成,编译gcc的环境一样,不论是针对计算机系统还是嵌入式系统,都可以调用glibc的函数;那么newlib存在的意义何在?难道它可以限定gcc的优化?

[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: EricFisher    Posted: 2006-03-19 22:56    Length: 1,096 byte(s)
[Original] [Print] [Top]
>除了内核以外,所有的程序都要或多或少的调用一些已有内核支持的标准函数;
>glibc就是编译gcc要调用的标准C函数的库;
单纯的编译gcc时,不需要glibc。

>目前出现了 newlib,是编译针对嵌入式系统开发的gcc的调用函数库;
>和glibc有什么具体或者大概区别也请大家给点提示;
newlib的信息可以参见网站 http://sourceware.org/newlib/
glibc主要针对于GNU/Linux的目标平台,底层实现和linux操作系统联系紧密。
newlib主要针对于嵌入式平台(特别是无操作系统的),相对比较精简,容易移植。

>因为编译gcc一般都是在计算机内完成,编译gcc的环境一样,不论是针对计算机系统还是嵌入式系统,都
>可以调用glibc的函数;那么newlib存在的意义何在?难道它可以限定gcc的优化?
编译交叉编译器cross gcc时,确实是需要在本地机器上完成。但是,如果交叉编译器所运行的目标机器是一个无操作系统内核的嵌入式平台,那么就应该使用newlib,比如mips-elf。如果目标机器也是GNU/Linux的,那么就应该用glibc,比如mips-linux。
[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: djcom    Posted: 2006-03-22 19:56    Length: 1,869 byte(s)
[Original] [Print] [Top]
Eric的回答有些不解之处。

>>除了内核以外,所有的程序都要或多或少的调用一些已有内核支持的标准函数;
>>glibc就是编译gcc要调用的标准C函数的库;
>单纯的编译gcc时,不需要glibc。
应该是boottrap gcc时不需要glibc把。
以前的configure --with-newlib就是干这个的
在用bootstrap gcc交叉编译glibc后,可以
再编译一道gcc, 建立完整编译器。

>>目前出现了 newlib,是编译针对嵌入式系统开发的gcc的调用函数库;
>>和glibc有什么具体或者大概区别也请大家给点提示;
>newlib的信息可以参见网站 http://sourceware.org/newlib/
>glibc主要针对于GNU/Linux的目标平台,底层实现和linux操作系统联系紧密。
>newlib主要针对于嵌入式平台(特别是无操作系统的),相对比较精简,容易移植。

>>因为编译gcc一般都是在计算机内完成,编译gcc的环境一样,不论是针对计算机系统还是嵌入式系统,都
>>可以调用glibc的函数;那么newlib存在的意义何在?难道它可以限定gcc的优化?
>>编译交叉编译器cross gcc时,确实是需要在本地机器上完成。但是,如果交叉编译器所运行的目标机器是一个
>无操作系统内核的嵌入式平台,那么就应该使用newlib,比如 mips-elf。如果目标机器也是GNU/Linux的,
>那么就应该用glibc,比如mips-linux
mips-linux/mips-elf主要看一些具体配置头文件之类,
可以参看tm-elf.h, tm-linux.h的区别。
从名字来说,大体说来,mips-linux的范围要精细过mips-elf.
mips-linux指名了linux os,这种os缺省支持elf
mips-elf则没有指名,
以前的uclinux toolchain有可能使用mips-elf-gcc ,然后elf2flt转化为
flat格式的可执行文件





[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: EricFisher    Posted: 2006-03-23 09:19    Length: 574 byte(s)
[Original] [Print] [Top]
>应该是boottrap gcc时不需要glibc把。
>以前的configure --with-newlib就是干这个的
>在用bootstrap gcc交叉编译glibc后,可以
>再编译一道gcc, 建立完整编译器。
有点这个意思:-)
但是,gcc的文档中介绍的交叉编译器是没有bootstrap的。参见http://gcc.gnu.org/install/build.html
在这一点,我也有点搞不清。有些文档上介绍,先用--with-newlib --without-headers来编译第一遍交叉
gcc,然后用这个交叉gcc来编译newlib,或者glibc。最后,再结合编译好的newlib或glibc来编译最终的
交叉gcc。
[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: want_king    Posted: 2006-04-24 23:40    Length: 673 byte(s)
[Original] [Print] [Top]
今天又想了一下,
1)首先glibc和newlib都是函数库
2)glibc 是liunx平台应用软件开发函数库,许多函数都是针对linux操作系统体系结构设计的。如文件系统的访问(例open( ) )都是调用linux的系统函数。可以说glibc不区分目标机,而是由linux进行区分。
而newlib是嵌入式开发的函数库,是一个简化的glibc。所涉及的系统调用是根据不同目标机分别完成。可以说是可以不通过操作系统直接进行操作。
3)可以说glibc的系统函数是通过操作系统系统函数再到具体操作;而newlib是直接操作。
举例:对串口2进行写。
glibc函数 要通过open( )获得串口2的inode,在调用write( ), 通过文件系统分析,在进行具体操作。
newlib函数 直接调用write( ),通过内置汇编 直接操作。
[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: faif    Posted: 2006-04-27 07:04    Length: 812 byte(s)
[Original] [Print] [Top]
说说我的看法:
1首先glibc和newlib都是函数库
是的没问题,但是glibc或者newlib可以说都是平台无关,也可以说是平台相关的。就是说在各种平台上都有,还不支持的平台就需要移植。
glibc在Solaris等机器上有,windows上也有port。

2,可以说glibc的系统函数是通过操作系统系统函数再到具体操作;而newlib是直接操作。
举例:对串口2进行写。
glibc函数 要通过open( )获得串口2的inode,在调用write( ), 通过文件系统分析,在进行具体操作。
newlib函数 直接调用write( ),通过内置汇编 直接操作。

你说的有道理,这样就证明了newlib移植方便了。我以前也见过ANSI C在其他嵌入CPU上的移植,例如用printf,在链接串口超级终端打印,printf本身是平台无关的,调用底层的一个基本的IO输出函数,只要把这个函数针对不同的CPU改写一下就可以了。所以说这些库的实现都是80%平台无关的
----
Free As In Freedom
[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: helllworld    Posted: 2006-04-27 09:35    Length: 318 byte(s)
[Original] [Print] [Top]
看了一下newlib的手册,不明白为什么math库单独拿出来。
Red Hat newlib C Library Documentation
Red Hat newlib C Math Library Documentation

newlib函数 直接调用write( ),通过内置汇编 直接操作。
有一些不解,既然是无os嵌入式平台,还有write系统调用吗?感觉就是用汇编指令直接操作。
----
好好学习 天天向上 不再灌水
[Original] [Print] [Top]
Subject: Re: glibc newlib高手多指点,希望对我和以后的新手又帮助
Author: zhuzj    Posted: 2006-05-12 11:08    Length: 134 byte(s)
[Original] [Print] [Top]
newlib的象write这样的系统调用要自己些的,只不过要实现的系统调用函数很少,newlib的手册有说明当你用到某个函数时你需要实现那些系统调用函数
[Original] [Print] [Top]
« Previous thread
请问:哪位大侠有微电子的专业英语词汇方面的资料
CPU 与 编译器
5
Next thread »
简单谈一下mips target
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:47:17, cost 0.043511867523193 ms.