index.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
  2. <HTML>
  3. <HEAD>
  4. <TITLE>uClibc -- a C library for embedded systems</TITLE>
  5. </HEAD>
  6. <body text="#000000" alink="#660000" link="#660000" bgcolor="#dee2de" vlink="#660000">
  7. <basefont face="lucida, helvetica, arial" size="3">
  8. <CENTER>
  9. <p>
  10. <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
  11. <TR>
  12. <td bgcolor="#000000">
  13. <FONT FACE="lucida, helvetica" COLOR="#ccccc0">
  14. <B>µ&nbsp;C&nbsp;l&nbsp;i&nbsp;b&nbsp;c</B>
  15. </FONT>
  16. </TD>
  17. </TR>
  18. </TABLE>
  19. <p>
  20. <!-- Begin Introduction section -->
  21. <TABLE WIDTH=95% CELLSPACING=1 CELLPADDING=4 BORDER=1>
  22. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  23. <A NAME="intro"> <BIG><B>
  24. uClibc -- a C library for embedded systems
  25. </font>
  26. </A></B></BIG>
  27. </TD></TR>
  28. <TR><TD BGCOLOR="#eeeee0">
  29. uClibc is a C library for embedded systems.
  30. <p>
  31. <p>
  32. uClibc is maintained by
  33. <a href="http://www.codepoet.org/andersen/erik/erik.html">Erik Andersen</a>
  34. and is licensed under the
  35. <a href="http://www.gnu.org/copyleft/lgpl.html">GNU LIBRARY GENERAL PUBLIC LICENSE</a>
  36. <p>
  37. It is my sincere hope that this is as useful to you as it is to me.
  38. <!-- Begin Mailing list section -->
  39. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  40. <A NAME="mailing_list"><BIG><B>
  41. Mailing List
  42. </A></B></BIG>
  43. </TD></TR>
  44. <TR><TD BGCOLOR="#eeeee0">
  45. uClibc has a
  46. <a href="http://uclibc.org/lists/uclibc/">mailing list</a>.
  47. To subscribe, go and visit
  48. <a href="http://uclibc.org/mailman/listinfo/uclibc">this page</a>.
  49. <p>
  50. <!-- Begin Download section -->
  51. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  52. <A NAME="download"><BIG><B>
  53. Download
  54. </A></B></BIG>
  55. </TD></TR>
  56. <TR><TD BGCOLOR="#eeeee0">
  57. <ul>
  58. <li> I now have a script that creats a daily snapshot tarball of uClibc and posts it on
  59. <a href="http://uclibc.org/uClibc-snapshot.tar.gz">here</a>.
  60. <li> uClibc now has its own publically browsable
  61. <a href="http://cvs.uclinux.org/cgi-bin/cvsweb/uClibc/">CVS tree</a> (this CVS tree is also mirrored onto
  62. <a href="http://uclibc.org/cgi-bin/cvsweb/uClibc/">uclibc.org</a> but they are both the same thing).
  63. <li> Anonymous
  64. <a href="http://cvs.uclinux.org/cvs_anon.html">CVS access</a>, and
  65. <li> For those that are actively contributing there is even
  66. <a href="http://cvs.uclinux.org/cvs_write.html">CVS write access</a>.
  67. </ul>
  68. <!-- Begin Applications section -->
  69. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  70. <A NAME="applications"><BIG><B>
  71. Known Working Applications List
  72. </A></B></BIG>
  73. </TD></TR>
  74. <TR><TD BGCOLOR="#eeeee0">
  75. uClibc now has a <a href="http://uclibc.org/uClibc-apps.html">list of applications</a>
  76. that are known to work. If you have any applications to add to the
  77. list, submissions are welcome!
  78. <!-- Begin Applications section -->
  79. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  80. <A NAME="contribute"><BIG><B>
  81. Help Support uClibc development
  82. </A></B></BIG>
  83. </TD></TR>
  84. <TR><TD BGCOLOR="#eeeee0">
  85. Do you like uClibc? Do you need support? Do you need some feature
  86. added to uClibc? Then why not help out? We are happy to accept
  87. donations, provide support contracts, and implement funded feature
  88. requests. Additionally, uClibc is looking for corporate sponsors to
  89. help sponsor development, pay for bandwidth, and help with hardware
  90. donations, especially donations of hardware for non-Intel
  91. architectures. Click here to help support uClibc and/or request features.
  92. <!-- Begin PayPal Logo -->
  93. <center>
  94. <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
  95. <input type="hidden" name="cmd" value="_xclick">
  96. <input type="hidden" name="business" value="andersen@codepoet.org">
  97. <input type="hidden" name="item_name" value="Support uClibc and/or request features">
  98. <input type="hidden" name="image_url" value="https://codepoet-consulting.com/images/codepoet.png">
  99. <input type="hidden" name="no_shipping" value="1">
  100. <input type="image" src="images/donate.png" border="0" name="submit" alt="Make donation using PayPal">
  101. </form>
  102. </center>
  103. <!-- End PayPal Logo -->
  104. <!-- Begin Latest News section -->
  105. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  106. <A NAME="news">
  107. <BIG><B>
  108. Latest News</A>
  109. </B></BIG>
  110. </A>
  111. </TD></TR>
  112. <TR><TD BGCOLOR="#eeeee0">
  113. <ul>
  114. <li> <b>26 November 2001, powerpc shared libraries fully working</b>
  115. <br>
  116. Dave Schleef finished off the the work needed for shared library support on
  117. powerpc. There had been a few problems remaining, and those are now squashed.
  118. So shared libs on powerpc should be working fully now.
  119. <p>
  120. <li> <b>14 November 2001, m68 compiles again, Large file support working</b>
  121. <br>
  122. About a month ago I synced the header files with glibc 2.2.4 for better
  123. C++ support and better standards compliance. I forgot to sync up m68k,
  124. sparc, powerpc, and mipsel. Dave Schleef fixed powerpc while he was fixing
  125. up the shared lib loader. I just fixed up m68k, sparc, and mipsel so they
  126. should all compile again.
  127. <p>
  128. I also finished up fixing large file support (just enable DOLFS in your
  129. Config file to enable it) and it is working just great, and greatly increases
  130. the number of glibc applications that will work "out-of-the-tarball" without
  131. needing any changes.
  132. <li> <b>12 November 2001, powerpc shared lib support</b>
  133. <br>
  134. Thanks to David Schleef, uClibc now has full shared library support
  135. on powerpc. This brings full shared library support to x86, ARM, and
  136. now powerpc. Thanks Dave!
  137. <p>
  138. <li> <b>7 November 2001, uClibc application list</b>
  139. <br>
  140. uClibc now has a <a href="http://uclibc.org/uClibc-apps.html">list of applications</a>
  141. that are known to work. If you have any applications to add to the
  142. list, submissions are welcome!
  143. <p>
  144. <li> <b>18 October 2001, buildroot uClibc example system</b>
  145. <br>
  146. Those wanting an easy way to test out uClibc and give it
  147. a test drive can download and compile
  148. <a href="ftp://uclibc.org/buildroot.tar.gz">buildroot.tar.gz</a>. This
  149. is a nifty buildsystem that will automagically download and build
  150. a <a href="http://user-mode-linux.sourceforge.net/">User-Mode Linux</a>
  151. kernel, and will then download source for and compile up a fully
  152. working uClibc based root filesystem. This should make it easy for
  153. people to create their own projects. I hope that this build system
  154. will allow people to more easily use and build uClibc based systems.
  155. As an example of how nicely this works, the
  156. <a href="http://tuxscreen.net/">Tuxscreen Project</a> is using a
  157. <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/tuxscreen/buildroot-tux/">slightly adjusted variant of the buildroot system</a> to cross
  158. compile the blob bootloader, linux kernel, and a uClibc based jffs2
  159. root filesystem (busybox, tinylogin, udhcp, lrzsz, pcmcia-cs and
  160. microwindows) for ARM. Pretty cool.
  161. <p>
  162. <li> <b>11 October 2001, v850 architecture support</b>
  163. <br>
  164. Miles Bader has contributed support for the v850 architecture.
  165. <p>
  166. <li> <b>25 Spetember 2001, header files updated</b>
  167. <br>
  168. uClibc's header files are now in sync with glibc 2.2.4,
  169. allowing better standards compliance, better portibility, and
  170. better C++ support.
  171. <p>
  172. <li> <b>4 July 2001, ARM shared library support</b>
  173. <br>
  174. uClibc now has full shared library support on ARM.
  175. <p>
  176. <li> <b>9 May 2001, libm added</b>
  177. <br>
  178. uClibc now has a very complete math library.
  179. <p>
  180. <p> <li> <b>9 May 2001, ld.so added</b>
  181. <br>
  182. uClibc now has a native ld.so. It currently is only ported to work on x86,
  183. but porting to other architectures should not be too difficult.
  184. <p> <li> <b>15 March 2001, powerpc port added</b>
  185. <br>
  186. David Schleef contributed a powerpc port, which is now in CVS.
  187. <p> <li> <b>19 February 2001, SH port added</b>
  188. <br>
  189. Jean-Yves Avenard contributed an SH port. See his email
  190. with the initial patch <a href="http://uclibc.org/lists/uclibc/2001-February/000409.html">here</a>.
  191. <p> <li> <b>16 January 2001, uClibc as a shared library</b>
  192. <br>
  193. As if January 16, uClibc can now be used (at least on x86) as a shared
  194. library. See the <a href="http://uclibc.org/lists/uclibc/2001-January/000126.html">email</a>
  195. announcing this achievement.
  196. <p> <li> <b>11 January 2001, gcc wrapper added</b>
  197. <br>
  198. Manuel Novoa III has created a wrapper for gcc that makes compiling apps vs uClibc
  199. as simple as just setting "CC" to gcc-uClibc-&lt arch&gt. This even works when cross
  200. compiling! Very cool.
  201. <p> <li> <b>3 January 2001, uClibc now has a web page</b>
  202. <br>
  203. A lot of work has been going on under the hood with uClibc,
  204. so I decided to put together this webpage to let the world know
  205. that it exists and is getting to be very usable.
  206. </ul>
  207. <!-- Begin TODO section -->
  208. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  209. <A NAME="download"><BIG><B>
  210. TODO
  211. </A></B></BIG>
  212. </TD></TR>
  213. <TR><TD BGCOLOR="#eeeee0">
  214. Here are a few things on the TODO list:
  215. <ul>
  216. <li> Shared library support for all supported architectures.
  217. We now have our own ld.so, but it needs to be ported to
  218. support each architecture.
  219. <li> Shared library support for mmu-less systems. This is
  220. very doable (think of C++ vtables for example), but will
  221. take some work.
  222. <li> Someone (hopefully) needs to volunteer to take the
  223. <a href="http://www.linuxbase.org/test/">LSB Test Suite</a>,
  224. pull out the C library testing stuff, and convert it
  225. (perl script, by hand, I don't care how) into a form
  226. that is usable without having it take over your entire
  227. system (i.e. similar to what is currently in the uClibc
  228. test suite). This will be <em>enormously</em> helpful!
  229. <li> other things as I think of them.
  230. </ul>
  231. <!-- Begin Links section -->
  232. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  233. <A NAME="links">
  234. <BIG><B>
  235. Other Open Source C libraries:
  236. </A>
  237. </B></BIG>
  238. </A>
  239. </TD></TR>
  240. <TR><TD BGCOLOR="#eeeee0">
  241. <ul>
  242. <li> <a href="http://www.k9wk.com/cdoc.html">Al's FREE C Runtime Library</a>
  243. <li><a href="http://www.fefe.de/dietlibc/">diet libc </a>
  244. <li>the <a href="http://www.cs.vu.nl/~ast/minix.html">minix</a>
  245. <a href="http://www.cs.vu.nl/cgi-bin/raw/pub/minix/2.0.0/src.tar"
  246. >C library</a>
  247. <li> <a href="http://sources.redhat.com/newlib/">newlib</a>
  248. <li>and there is a
  249. <a href="ftp://sourceware.cygnus.com/pub/ecos/">C library</a>, for
  250. <a href="http://sources.redhat.com/ecos/">eCos</a> as well.
  251. <ul>
  252. <!-- Begin History section -->
  253. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  254. <A NAME="history"><BIG><B>
  255. History
  256. </A></B></BIG>
  257. </TD></TR>
  258. <TR><TD BGCOLOR="#eeeee0">
  259. This history and origin of uClibc is long and twisty.
  260. In the beginning, there was <a
  261. href="http://www.gnu.org/software/libc/libc.html">GNU libc</a>. Then, libc4
  262. (which later became linux libc 5) forked from GNU libc version 1.07.4, with
  263. additions from 4.4BSD, in order to support Linux. Later, the <a
  264. href="http://www.cix.co.uk/~mayday/">Linux-8086 C library</a>, which is part of
  265. the <a href="http://www.elks.ecs.soton.ac.uk/">elks project</a>, was created,
  266. which was, apparently, largely written from scratch but also borrowed code from
  267. libc4, glibc, some Atari library code, with bits and pieces from about 20 other
  268. places. Then uClibc forked off from the Linux-8086 C library in order to run
  269. on <a href="http://www.uclinux.org">µClinux</a>.
  270. <p>
  271. I had for some time been despairing over the state of C libraries in Linux.
  272. GNU libc, the standard, is very poorly suited to embedded systems (and it just
  273. gets bigger with every release). I spent quite a bit of time looking over the
  274. other Open Source C libraries that I knew of (listed below), and none of them really
  275. impressed me. I felt there was a real vacancy in the embedded Linux ecology.
  276. The closest library to what I imagined an embedded C library should be was
  277. uClibc. But that had a lot of problems too -- not the least of which was that,
  278. traditionally, uClibc had a complete source tree fork in order to support each
  279. and every new platform, resulting in a big mess of twisty versions, all
  280. different. I decided to fix it and the result is what you see here.
  281. My source tree has now become the official uClibc source tree and it now lives
  282. on cvs.uclinux.org.
  283. <p>
  284. To start with, (with some initial help from <a
  285. href="http://www.uclinux.org/developers/index.html">D. Jeff Dionne</a>), I
  286. ported it to run on x86. I then grafted in the header files from glibc 2.1.3
  287. and cleaned up the resulting breakage. This (plus some additional work) has
  288. made it almost completely independant of kernel headers, a large departure from
  289. its traditional tightly-coupled-to-the-kernel origins. I have written and/or
  290. rewritten a number of things that were missing or broken, and sometimes grafted
  291. in bits of code from the current glibc and libc5. I have also built a proper
  292. platform abstraction layer, so now you can simply edit the file "Config" and
  293. use that to decide which architecture you will be compiling for, and whether or
  294. not your target has an MMU, and FPU, etc. I have also added a test suite,
  295. which, though incomplete, is a good start. Several people have helped by
  296. contributing ports to new architectures, and a lot of work has been done on
  297. adding support for missing features.
  298. <p>
  299. <!-- Begin Links section -->
  300. <TR><TD BGCOLOR="#ccccc0" ALIGN=center>
  301. <A NAME="links">
  302. <BIG><B>
  303. Links to other useful stuff
  304. </A>
  305. </B></BIG>
  306. </A>
  307. </TD></TR>
  308. <TR><TD BGCOLOR="#eeeee0">
  309. <ul>
  310. <li> <a href="http://www.uclinux.org/">The uClinux home page</a>.
  311. <p>
  312. <li> <a href="http://cvs.uclinux.org/">The uClinux CVS reporitory</a>.
  313. <p>
  314. <li> <a href="http://uclibc.org/">The uClibc.org home page</a>.
  315. <p>
  316. </ul>
  317. <!-- End of Table -->
  318. </TD></TR>
  319. </TABLE>
  320. </P>
  321. <!-- Footer -->
  322. <HR>
  323. <TABLE WIDTH="100%">
  324. <TR>
  325. <TD>
  326. <font size="-1" face="arial, helvetica, sans-serif">
  327. Mail all comments, insults, suggestions and bribes to
  328. <a href="mailto:andersen@codepoet.org">Erik Andersen</a><BR>
  329. </font>
  330. </TD>
  331. <TD>
  332. <a href="http://www.vim.org"><img border=0 width=90 height=36
  333. src="images/written.in.vi.png"
  334. alt="This site created with the vi editor"></a>
  335. </TD>
  336. <TD>
  337. <a href="http://www.gimp.org/"><img border=0 width=90 height=36
  338. src="images/gfx_by_gimp.png" alt="Graphics by GIMP"></a>
  339. </TD>
  340. <TD>
  341. <a href="http://www.linuxtoday.com"><img width=90 height=36
  342. src="images/ltbutton2.png" alt="Linux Today"></a>
  343. </TD>
  344. <TD>
  345. <p><a href="http://slashdot.org"><img width=90 height=36
  346. src="images/sdsmall.png" alt="Slashdot"></a>
  347. </TD>
  348. <TD>
  349. <a href="http://freshmeat.net"><img width=90 height=36
  350. src="images/fm.mini.png" alt="Freshmeat"></a>
  351. </TD>
  352. </TR>
  353. </TABLE>
  354. </CENTER>
  355. </BODY>
  356. </HTML>