From: Carl Miller To: Daniel Qarras , uclibc at uclibc[.]org Subject: Re: [uClibc] Rationale for target naming convention? Date: Mon, 1 Nov 2004 11:00:13 -0800 > I did not find any rationale for target naming > convention using for example "arm-linux-uclibc" with > buildroot when many packages like gdb are trying to > find something like arm-*-linux? Wouldn't > "arm-uclibc-linux" have been much better choice? > > Thanks. The traditional GNU development tools target tuple is CPU architecture - hardware platform/vendor - OS Many times, especially in embedded development, the middle specifier of the tuple is dropped. This is because it is not very often relevant to deciding how to build a compiler, and most embedded targets are specialized hardware that are too obscure for the tools to know about. But if you watch the configure scripts running, they will always insert a hardware platform/vendor specifier back in if it is omitted. E.g., "arm-linux" will become "arm-unknown-linux". It used to be that for any particular combination of CPU architecture, hardware vendor or hardware platform, and operating system, there would only be once choice of C library. That is not the case with Linux. Linux can run with glibc, uClibc, dietlibc, libc5, or (if you really want to dig into the dusty archives) libc4. Thus, for Linux targets, it's common to extend the target tuple to four fields: CPU architecture - platform/vendor - OS - C library However, some older versions of tools don't recognize the fourth field properly, and it's only recently that patches are becoming common to make the tools respond properly to C library fields other than "-gnu" (referring to glibc). Thus, "arm-linux-uclibc" is correct because the C library must be specified last, in the fourth field, and only three fields are shown because the hardware platform/vendor is being omitted as moot. Recent tools should canonicalize this properly to "arm-unknown-linux-uclibc". "arm-uclibc-linux" is not correct because it indicates that either the name of your target hardware, or the name of the vendor who designed/manufactured your target hardware is "uclibc", and since you have not specified a C library in the fourth field, the default library will be assumed (which is glibc for Linux). ------Carl _______________________________________________ uClibc mailing list uClibc@uclibc.org http://codepoet.org/mailman/listinfo/uclibc