Thursday, July 22, 2010

Compiler Linker Libraries for Embedded Linux

[1] Kernel Org about Libc
[2] GNU C Library - GLIBC



From libc.info and Coreutils.info
-----------------------------------
unlink,
rename,


if (stat("/dev/ttyUSB3",&buf)==0) {
//3G modem present
Misc::debug_print((GSN_S8*)"3G modem detected",GSN_LOG_INFO);
Misc::debug_print((GSN_S8*)"Killing pppd (if already running)",GSN_LOG_INFO);
if (system("killall pppd")==0) {
sleep(10);
GPIO_CMM_LNK_OFF;
}
rc = pthread_create(&pppthread, NULL, runpppd, &threadarg);
if (rc == 0) {
Misc::debug_print((GSN_S8*)"ppp thread created, sleeping to allow connection",GSN_LOG_INFO);
sleep(30);
} else {
Misc::debug_print((GSN_S8*)"failed to create ppp thread\n",GSN_LOG_INFO);
exit(1);
}
if (CommsLinkSessionMgr::isPPPConnectionAvailabe()) {
GPIO_CMM_LNK_ON;
} else {
GPIO_CMM_LNK_OFF;
}
}




1. Available Libraries.
-------------------------------------
A. Glibc
From: http://en.wikipedia.org/wiki/Glibc
The GNU C Library, commonly known as glibc, is the C standard library released by the GNU Project. Originally written by the Free Software Foundation (FSF) for the GNU operating system, the library's development has been overseen by a committee since 2001,[2] with Ulrich Drepper from Red Hat as the lead contributor and maintainer.

Released under the GNU Lesser General Public License, glibc is free software.

B. uClibc
From: http://en.wikipedia.org/wiki/UClibc
In computing, uClibc is a small C standard library intended for embedded Linux systems. uClibc was created to support uClinux, a version of Linux not requiring a memory management unit and thus suited for microcontrollers (uCs; the "u" is a romanization of μ for "micro").[2]

Development on uClibc started around 1999.[3] uClibc was mostly written from scratch,[4] but has incorporated code from glibc and other projects.[5]






COMPILER LINKER TOOL CHAIN PATH IN LTIB
------------------------------------------------------
[q.yang@localhost ~]$ tree /opt/nxp/ -L 2
/opt/nxp/
`-- gcc-3.4.5-glibc-2.3.6
`-- arm-linux-gnu

[q.yang@localhost ~]$ tree /opt/freescale/ -L 4
/opt/freescale/
`-- usr
`-- local
`-- gcc-4.1.2-glibc-2.5-nptl-3
`-- arm-none-linux-gnueabi


[q.yang@localhost ~]$ tree CodeSourcery/ -L 3
CodeSourcery/
`-- arm-2010q1
|-- arm-none-linux-gnueabi
| |-- bin
| |-- include
| |-- lib
| |-- libc
| `-- share
|-- bin
| |-- arm-none-linux-gnueabi-addr2line
| |-- arm-none-linux-gnueabi-ar
| |-- arm-none-linux-gnueabi-as
| |-- arm-none-linux-gnueabi-c++
| |-- arm-none-linux-gnueabi-c++filt
| |-- arm-none-linux-gnueabi-cpp
| |-- arm-none-linux-gnueabi-g++
| |-- arm-none-linux-gnueabi-gcc
| |-- arm-none-linux-gnueabi-gcc-4.4.1
| |-- arm-none-linux-gnueabi-gcov
| |-- arm-none-linux-gnueabi-gdb
| |-- arm-none-linux-gnueabi-gdbtui
| |-- arm-none-linux-gnueabi-gprof
| |-- arm-none-linux-gnueabi-ld
| |-- arm-none-linux-gnueabi-nm
| |-- arm-none-linux-gnueabi-objcopy
| |-- arm-none-linux-gnueabi-objdump
| |-- arm-none-linux-gnueabi-ranlib
| |-- arm-none-linux-gnueabi-readelf
| |-- arm-none-linux-gnueabi-size
| |-- arm-none-linux-gnueabi-sprite
| |-- arm-none-linux-gnueabi-strings
| `-- arm-none-linux-gnueabi-strip
|-- lib
| `-- gcc
|-- libexec
| |-- arm-none-linux-gnueabi-post-install
| `-- gcc
`-- share
`-- doc



[q.yang@localhost ~]$ tree /opt/nxp/ -L 4
/opt/nxp/
`-- gcc-3.4.5-glibc-2.3.6
`-- arm-linux-gnu
|-- arm-linux-gnu
| |-- bin
| |-- etc
| |-- include
| |-- info
| |-- lib
| |-- libexec
| |-- share
| |-- sys-include
| `-- usr
|-- bin
| |-- arm-linux-gnu-addr2line
| |-- arm-linux-gnu-ar
| |-- arm-linux-gnu-as
| |-- arm-linux-gnu-c++
| |-- arm-linux-gnu-c++filt
| |-- arm-linux-gnu-cpp
| |-- arm-linux-gnu-g++
| |-- arm-linux-gnu-gcc
| |-- arm-linux-gnu-gcc-3.4.5
| |-- arm-linux-gnu-gccbug
| |-- arm-linux-gnu-gcov
| |-- arm-linux-gnu-gprof
| |-- arm-linux-gnu-ld
| |-- arm-linux-gnu-nm
| |-- arm-linux-gnu-objcopy
| |-- arm-linux-gnu-objdump
| |-- arm-linux-gnu-ranlib
| |-- arm-linux-gnu-readelf
| |-- arm-linux-gnu-size
| |-- arm-linux-gnu-strings
| |-- arm-linux-gnu-strip
| `-- fix-embedded-paths
|-- distributed
| |-- arm-linux-gnu -> ../arm-linux-gnu
| |-- bin
| |-- include -> ../include
| |-- info -> ../info
| |-- lib -> ../lib
| |-- libexec -> ../libexec
| `-- man -> ../man
|-- include
| `-- c++
|-- info
|-- lib
| |-- gcc
| `-- libiberty.a
|-- libexec
| `-- gcc
|-- man
| |-- man1
| `-- man7
`-- tmp


[q.yang@localhost ~]$ tree /opt/freescale/ -L 6
/opt/freescale/
`-- usr
`-- local
`-- gcc-4.1.2-glibc-2.5-nptl-3
`-- arm-none-linux-gnueabi
|-- arm-none-linux-gnueabi
| |-- bin
| |-- lib
| `-- sysroot
|-- bin
| |-- arm-none-linux-gnueabi-addr2line
| |-- arm-none-linux-gnueabi-ar
| |-- arm-none-linux-gnueabi-as
| |-- arm-none-linux-gnueabi-c++
| |-- arm-none-linux-gnueabi-c++filt
| |-- arm-none-linux-gnueabi-cpp
| |-- arm-none-linux-gnueabi-g++
| |-- arm-none-linux-gnueabi-gcc
| |-- arm-none-linux-gnueabi-gcc-4.1.2
| |-- arm-none-linux-gnueabi-gccbug
| |-- arm-none-linux-gnueabi-gcov
| |-- arm-none-linux-gnueabi-gprof
| |-- arm-none-linux-gnueabi-ld
| |-- arm-none-linux-gnueabi-nm
| |-- arm-none-linux-gnueabi-objcopy
| |-- arm-none-linux-gnueabi-objdump
| |-- arm-none-linux-gnueabi-ranlib
| |-- arm-none-linux-gnueabi-readelf
| |-- arm-none-linux-gnueabi-size
| |-- arm-none-linux-gnueabi-strings
| `-- arm-none-linux-gnueabi-strip
|-- include
| `-- c++
|-- info
|-- lib
| |-- gcc
| `-- libiberty.a
|-- libexec
| `-- gcc
|-- man
| |-- man1
| `-- man7
|-- share
`-- tmp

No comments: