Good Day,
I tried my first kernel compile today. Guided by Michael A Peters
http://216.22.163.20/Linux_Pages/kernel_build.shtml
The kernel won't start building. Foregoing building commands did not
produce alarming comments on the console. However, gcc stops at 'make
vmlinux'.
I used /usr/src/kernel-source-2.2.19 put there by Potato. The kernel
started doing weird after a few days of service: Tux was partly covered
by bush-like stuff, feet grayed out (not orange) and the screen was
shifted to the left.
I saved the errors. Honestly, this is the first time in my life and I
don't know what to make of the output. I kept some notes during the
whole exercise. To an experienced compiler the info below may be
revealing. I pointed back to the lines in question with <----xx.
Thanks for your reply.
--
A. Maurits de Wolff
Amsterdam
================================================
console output
=================================================
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o
scripts/split-include scripts/split-include.c
In file included from /usr/include/errno.h:36,
from scripts/split-include.c:26:
/usr/include/bits/errno.h:25: linux/errno.h: No such file or directory
make: *** [scripts/split-include] Error 1
================================================
<snip /usr/include/bits/errno.h>
=============================================
#ifdef _ERRNO_H
# undef EDOM
# undef EILSEQ
# undef ERANGE
# include <linux/errno.h> <------------- line25
/* Linux has no ENOTSUP error code. */
# define ENOTSUP EOPNOTSUPP
/* Linux also has no ECANCELED error code. Since it is not used here
we define it to an invalid value. */
# define ECANCELED 125
# ifndef __ASSEMBLER__
/* We now need a declaration of the `errno' variable. */
extern int errno;
/* Function to get address of global `errno' variable. */
extern int *__errno_location __P ((void)) __attribute__ ((__const__));
# if defined _LIBC
/* We wouldn't need a special macro anymore but it is history. */
# define __set_errno(val) (*__errno_location ()) = (val)
# endif /* _LIBC */
# if !defined _LIBC || defined _LIBC_REENTRANT
/* When using threads, errno is a per-thread value. */
# define errno (*__errno_location ())
# endif
# endif /* !__ASSEMBLER__ */
#endif /* _ERRNO_H */
#if !defined _ERRNO_H && defined __need_Emath
/* This is ugly but the kernel header is not clean enough. We must
define only the values EDOM and ERANGE in case __need_Emath is
defined. The value is the same for all Linux ports. */
# define EDOM 33 /* Math argument out of domain of function. */
# define EILSEQ 84 /* Illegal byte sequence. */
# define ERANGE 34 /* Math result not representable. */
#endif /* !_ERRNO_H && __need_Emath */
===================================================
<snip /usr/include/errno.h>
=================================================
/*
* ISO C Standard: 4.1.3 Errors <errno.h>
*/
#ifndef
_ERRNO_H
/* The includer defined __need_Emath if he wants only the definitions
of EDOM and ERANGE, and not everything else. */
#ifndef
__need_Emath
#define
_ERRNO_H
1
#include <features.h>
#endif
__BEGIN_DECLS
/* Get the error number constants from the system-specific file.
This file will test __need_Emath and _ERRNO_H. */
#include <bits/errno.h> <-----------------line36
#undef
__need_Emath
#ifdef
_ERRNO_H
/* Declare the `errno' variable, unless it's defined as a macro by
bits/errno.h. This is the case in GNU, where it is a per-thread
variable. This redeclaration using the macro still works, but it
will be a function declaration without a prototype and may trigger
a -Wstrict-prototypes warning. */
#ifndef
errno
extern int errno;
#endif
#ifdef __USE_GNU
/* The full and simple forms of the name with which the program was
invoked. These variables are set up automatically at startup
based on
the value of ARGV[0] (this works only if you use GNU ld). */
extern char *program_invocation_name, *program_invocation_short_name;
#endif /* __USE_GNU */
#endif /* _ERRNO_H */
__END_DECLS
#endif /* _ERRNO_H */
/* The Hurd <bits/errno.h> defines `error_t' as an enumerated type so
that printing `error_t' values in the debugger shows the
names. We
might need this definition sometimes even if this file was
included
before. */
#if defined __USE_GNU || defined __need_error_t
# ifndef __error_t_defined
typedef int error_t;
# define __error_t_defined 1
# endif
# undef __need_error_t
#endif