configuring the GRUB.
* GCC 4.1.3 or later
+ Note: older versions may work but support is limited
+
+ Experimental support for clang 3.3 or later (results in much bigger binaries)
+ for i386, x86_64, arm (including thumb), arm64, mips(el), powerpc, sparc64
+ Note: clang 3.2 or later works for i386 and x86_64 targets but results in
+ much bigger binaries.
+ earlier versions not tested
+ Note: clang 3.2 or later works for arm
+ earlier versions not tested
+ Note: clang on arm64 is not supported due to
+ https://llvm.org/bugs/show_bug.cgi?id=26030
+ Note: clang 3.3 or later works for mips(el)
+ earlier versions fail to generate .reginfo and hence gprel relocations
+ fail.
+ Note: clang 3.2 or later works for powerpc
+ earlier versions not tested
+ Note: clang 3.5 or later works for sparc64
+ earlier versions return "error: unable to interface with target machine"
+ Note: clang has no support for ia64 and hence you can't compile GRUB
+ for ia64 with clang
* GNU Make
* GNU Bison 2.3 or later
* GNU gettext 0.17 or later
* GNU binutils 2.9.1.0.23 or later
* Flex 2.5.35 or later
* Other standard GNU/Unix tools
+* a libc with large file support (e.g. glibc 2.1 or later)
On GNU/Linux, you also need:
If you use a development snapshot or want to hack on GRUB you may
need the following.
-* Python 2.5.2 or later
+* Python 2.6 or later
* Autoconf 2.60 or later
* Automake 1.10.1 or later
-* Autogen 5.10 or later
Prerequisites for make-check:
3. Type `./autogen.sh'.
+ * autogen.sh uses python. By default invocation is "python" but can be
+ overriden by setting variable $PYTHON.
+
4. Type `./configure' to configure the package for your system.
If you're using `csh' on an old version of System V, you might
need to type `sh ./configure' instead to prevent `csh' from trying
If build and host are different make check isn't available.
+If build and host are different man pages are not generated.
+
As an example imagine you have a build system running on FreeBSD on sparc
-which prepares packages for developpers running amd64 GNU/Linux laptop and
+which prepares packages for developers running amd64 GNU/Linux laptop and
they need to make images for ARM board running U-boot. In this case:
build=sparc64-freebsd
For this example the configure line might look like (more details below)
(some options are optional and included here for completeness but some rarely
-used options are omited):
+used options are omitted):
./configure BUILD_CC=gcc BUILD_FREETYPE=freetype-config --host=amd64-linux-gnu
CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" FREETYPE=amd64-linux-gnu-freetype-config
--target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc
TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6"
TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip"
-TARGET_NM=arm-elf-nm LEX=gflex
+TARGET_NM=arm-elf-nm TARGET_RANLIB=arm-elf-ranlib LEX=gflex
You need to use following options to specify tools and platforms. For minimum
version look at prerequisites. All tools not mentioned in this section under
generate sin and cos tables.
2. BUILD_CFLAGS= for C options for build.
3. BUILD_CPPFLAGS= for C preprocessor options for build.
- 4. BUILD_FREETYPE= for freetype-config for build (optional).
+ 4. BUILD_LDFLAGS= for linker options for build.
+ 5. BUILD_FREETYPE= for freetype-config for build (optional).
- For host
1. --host= to autoconf name of host.
2. CC= for gcc able to compile for host
- 3. CFLAGS= for C options for host.
- 4. CPPFLAGS= for C preprocessor options for host.
- 5. LDFLAGS= for linker options for host.
+ 3. HOST_CFLAGS= for C options for host.
+ 4. HOST_CPPFLAGS= for C preprocessor options for host.
+ 5. HOST_LDFLAGS= for linker options for host.
6. FREETYPE= for freetype-config for host (optional).
7. Libdevmapper if any must be in standard linker folders (-ldevmapper) (optional).
8. Libfuse if any must be in standard linker folders (-lfuse) (optional).
8. TARGET_OBJCOPY= for objcopy for target.
9. TARGET_STRIP= for strip for target.
10. TARGET_NM= for nm for target.
+ 11. TARGET_RANLIB= for ranlib for target.
- Additionally for emu, for host and target.
- 1. SDL is looked for in stadard linker directories (-lSDL) (optional)
- 2. libpciaccess is looked for in stadard linker directories (-lpciaccess) (optional)
- 3. libusb is looked for in stadard linker directories (-lusb) (optional)
+ 1. SDL is looked for in standard linker directories (-lSDL) (optional)
+ 2. libpciaccess is looked for in standard linker directories (-lpciaccess) (optional)
+ 3. libusb is looked for in standard linker directories (-lusb) (optional)
- Platform-agnostic tools and data.
1. make is the tool you execute after ./configure.