Directory structure of glibc and header files installed on Linux

Adhemerval Zanella adhemerval.zanella@linaro.org
Thu Mar 4 19:58:40 GMT 2021


On Thu, Mar 4, 2021 at 1:56 PM Peng Yu <pengyu.ut@gmail.com> wrote:
>
> Hi Adhemerval and Florian,
>
> > That's why the simplest solution is as Florian has put it to build a
> > glibc to the target you want to
> > inspect and check the installed headers.
>
> I don't understand this part. When it is installed, it does copies or
> symlinks? If it is just copies, how to tell where they are originally
> from? How to avoid the conflict between user installed libc vs the
> system default installed libc (as. libc6-dev in debian lineage)?

It always copy, there is no symlink involved in the installation. Also, there is
nothing preventing you to wreck your system by installing a glibc over the
system one (you should not do it unless you know *exactly* what you are
doing).

The usual process of installing the glibc is during either a work rebuild on a
sysroot (like Linux From Scratch does) or within a sysroot (like
build-many-glibcs.py
does).

>
> Do you have to build glibc before running build-many-glibcs.py? How to
> run build-many-glibcs.py? It seems that it have options. I am not sure
> what options I should use. Could you show me the complete command?

The build-many-glibcs.py requires some tools, like a working gcc, python3,
bison, and the other usual tools required to build gcc and glibc. The simplest
way to use is:

(1) glibc-git$ ./scripts/build-many-glibcs.py checkout
/path/to/place/source/and/binaries
(2) glibc-git$ ./scripts/build-many-glibcs.py host-libraries
(3) glibc-git$ ./scripts/build-many-glibcs.py compilers x86_64-linux-gnu
(4) glibc-git$ ./scripts/build-many-glibcs.py glibcs x86_64-linux-gnu

The (1) will download the required source (binutils, linux, gcc,
glibc, math libraries), (2) will
build the math libraries used in gcc built, (3) will build a bootstrap
compiler targetting
x86_64-linux-gnu, and finally (4) will build a glibc using the
bootstrap compiler built.

>
> Does macOS use glibc?

No, macOS uses its own libc implementation. And there is no glibc
support for macOS,
neither in plan.

>
> On macOS, I see this.
>
> $ gcc -E -dD - <<< '#include <sys/socket.h>' |grep '^#define SOL_'
> #define SOL_SOCKET 0xffff
>
> On Linux, I see this. Is that macOS uses a completely different libc
> library? Or glibc has a specific target for macOS?

Yes, macOS uses https://opensource.apple.com/source/Libc/

>
> $ gcc -E -dD - <<< '#include <sys/socket.h>' |grep '^#define SOL_'
> #define SOL_RAW 255
> #define SOL_DECNET 261
> #define SOL_X25 262
> #define SOL_PACKET 263
> #define SOL_ATM 264
> #define SOL_AAL 265
> #define SOL_IRDA 266
> #define SOL_NETBEUI 267
> #define SOL_LLC 268
> #define SOL_DCCP 269
> #define SOL_NETLINK 270
> #define SOL_TIPC 271
> #define SOL_RXRPC 272
> #define SOL_PPPOL2TP 273
> #define SOL_BLUETOOTH 274
> #define SOL_PNPIPE 275
> #define SOL_RDS 276
> #define SOL_IUCV 277
> #define SOL_CAIF 278
> #define SOL_ALG 279
> #define SOL_NFC 280
> #define SOL_KCM 281
> #define SOL_TLS 282
> #define SOL_XDP 283
> #define SOL_SOCKET 1
>
> --
> Regards,
> Peng


More information about the Libc-help mailing list