* Akira Urushibata <[email protected]> [2025-05-13 17:45]:
> Like many other UNIX-derived utilities, make is a language. As a
> language it is tough to study. There are several reasons for this.
> For one thing GNU Make, the most widely used implementation, is rich
> in features. The intricate details make GNU Make textbooks such as
> the one from O'Reilly hard to digest: the reader is easily
> disoriented.
That's because when learning any subject first you must make sure that
you understand each single word and if you don't understand a word you
have to clarify the word or clear the word before moving forward with
reading. If you ensure of defining those words before you read you
will have no trouble in learning.
> In addition, and perhaps more importantly, there is an acute shortage
> of makefiles to use as study material.
I was surprised when reading this when it is well known that there are
so many Make files very easy to find. Did you try searching software
repositories?
Then if you need examples of a make file, what you can also do, you
can ask any large language model to give you such examples. It's like
within a second you can get an example.
project/
│
├── main.c
├── utils.c
├── utils.h
└── Makefile
main.c
------
#include <stdio.h>
#include "utils.h"
int main() {
printf("The sum of 3 and 5 is %d\n", add(3, 5));
return 0;
}
utils.c
-------
#include "utils.h"
int add(int a, int b) {
return a + b;
}
utils.h
-------
#ifndef UTILS_H
#define UTILS_H
int add(int a, int b);
#endif
Makefile:
---------
# Compiler to use
CC = gcc
# Compiler flags
CFLAGS = -Wall -Wextra
# Object files
OBJS = main.o utils.o
# Executable name
TARGET = my_program
# Default target
all: $(TARGET)
# Link the object files into the final executable
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# Compile the source files into object files
%.o: %.c
$(CC) $(CFLAGS) -c $<
# Clean up the build
clean:
rm -f $(OBJS) $(TARGET)
# Phony targets
.PHONY: all clean
> Makefiles describe the build processes of the Linux kernel, GCC,
> Glibc, GNU binutils, GNU coreutils, Bash and most other major OS
> components. However the packages seldom come with a ready-to-run
> makefile. Instead the makefile is produced by a configure script.
> Such machine-generated makefiles are difficult to analyze and are of
> little educational value.
Makefiles are versatile tools and can be used for a variety of tasks
beyond just building software.
See more examples here:
https://gnu.support/files/tmp/clipboard-2025-05-28-09-37-44.html
> Most people who have heard of a "Linux" OS aren't aware about this.
Maybe because they are not developers.
> They assume that "Linux" is a standard.
To understand what large group of people really think or assume, one
would need to make a survey. For example, one could ask 1000 users if
they assume that Linux is some standard, and then evaluate the survey
by percentage groups of their answers.
Many people have names of their GNU/Linux distributions. The fact that
there are so many distributions also speaks that there is no single
standard, even though many distributions rely on plethora of various
standards.
> In reality there is no "standard Linux", only distributions which
> combine system components and popular applications selected in
> accordance to certain policies. When it comes to the actual
> components that go into distributions there is significant variation.
> For example, most distributions use Bash as the default shell and Gawk
> as the awk interpreter but Debian employs Dash and Mawk, respectively,
> in their places. The configure and make procedure makes this
> possible.
That is the freedom we want. There is absolutely no need for
standardization so that every software distribution is the same. What
we want is the freedom and the freedom gives diversity.
> I suspect that those who promote "Linux" for the name of the entire
> OS do not want people to find out that there is no such thing as a
> "standard Linux".
Actually, I don't think so. I don't share this opinion. I think that
those people who promote any software distribution, they are promoting
their own projects and there is a choice of many, many different
distributions. So that is okay and good for the society.
> Our efforts to promote the name "GNU/Linux" for the entire OS have not
> been totally successful.
The point is if the GNU system is bundled with the Linux kernel, then
we call it GNU Linux. Other parties need not call it that way.
Here is a list of GNU/Linux distributions that explicitly include "GNU" in
their name alongside Linux, as referenced in the search results:
1. **Dragora GNU/Linux-libre**
- A fully free distribution using the Linux-libre kernel and Runit as its
init system. It emphasizes freedom and reliability but is noted for
installation challenges .
2. **GNU Guix System**
- Developed by the GNU Project, it features a declarative configuration
model and its own package manager. It uses the Linux-libre kernel and avoids
non-free software entirely .
3. **Hyperbola GNU/Linux-libre**
- An Arch-based distribution prioritizing software freedom. It uses
Linux-libre, avoids SystemD, and focuses on long-term stability by holding back
packages .
4. **Parabola GNU/Linux-libre**
- Another Arch-based distro stripped of non-free components, using
Linux-libre. It supports both SystemD and OpenRC and maintains 32-bit support .
5. **Trisquel GNU/Linux**
- Based on Ubuntu but fully compliant with FSF guidelines. It uses a
deblobbed Linux-libre kernel and offers editions like MATE, LXDE, and Sugar .
6. **Utoto GNU/Linux**
- Originally Gentoo-based, later switched to Ubuntu. It was the first
FSF-certified distro but is now considered discontinued .
7. **Dyne:bolic GNU/Linux**
- A multimedia-focused live distribution designed for offline use. It is
outdated (last release in 2011) and 32-bit only .
8. **PureOS**
- While not always labeled "GNU/Linux," it is FSF-approved and based on
Debian, with a focus on privacy and removing binary blobs from the kernel .
Notes:
- The Free Software Foundation (FSF) endorses these distributions for their
strict adherence to free software principles, including the use of GNU
components and avoidance of proprietary blobs .
- Some distributions like **Debian** and **Fedora** include GNU tools but are
not FSF-certified due to non-free repositories or firmware .
For further details, refer to the FSF's recommendations or the
respective project pages.
> So I suggest that we, instead of merely attaching "GNU" to "Linux",
> send a message that "GNU" and "Linux" are separate, and that the
> engineers who are aware of the difference and treat it as something
> other than a political disagreement possess a set of valuable skills.
> Those who make the distinction and are aware of what the "GNU" part is
> capable of are adept with operations such as installation of software,
> backing up data, adding or replacing hardware, salvaging a damaged
> system and conducting tests before and after any major change.
GNU and Linux are always separate though work together when they are
put together.
GNU/Linux means GNU operating system with the Linux kernel. Engineers
know very well that Linux is the kernel and that it does nothing
alone, it doesn't offer operating environment or system. GNU is one
system, and there are different systems based on Linux kernel.
> We should try to enlighten people to the fact that instead of a
> "standard Linux system" we have an "ecosystem with various GNU/Linux
> distributions".
Ecosystem:
https://www.gnu.org/philosophy/words-to-avoid.html#Ecosystem
It is not really word to promote in the GNU project.
I think that it is enough known that there are many, many different
GNU/Linux distributions.
> It may be difficult, given the existing prejudices, but people are
> aware that their lives are ever more reliant on computer systems and
> there are great benefits in truly understanding them while the risks
> associated to ignorance is growing steadily.
I don't even know, is it possible to understand if there are
prejudices or not without doing the actual public survey?
Jean Louis
_______________________________________________
libreplanet-discuss mailing list
[email protected]
https://lists.libreplanet.org/mailman/listinfo/libreplanet-discuss