2011-02-12 13:22:29 +08:00
|
|
|
|
|
|
|
A quick-and-simple guide to installing musl:
|
|
|
|
|
|
|
|
|
|
|
|
STEP 1: Configuration
|
|
|
|
|
|
|
|
Edit config.mak to override installation prefix, compiler options,
|
2011-02-16 03:52:11 +08:00
|
|
|
target architecture, etc. as needed. Currently supported archs are
|
|
|
|
i386 and x86_64. Otherwise, the defaults should be okay for trying out
|
|
|
|
musl with static linking only.
|
2011-02-12 13:22:29 +08:00
|
|
|
|
|
|
|
DO NOT set the prefix to /, /usr, or even /usr/local unless you really
|
|
|
|
know what you're doing! You'll probably break your system such that
|
|
|
|
you'll no longer be able to compile and link programs against glibc!
|
|
|
|
This kind of setup should only be used if you're building a system
|
|
|
|
where musl is the default/primary/only libc.
|
|
|
|
|
|
|
|
The default prefix is /usr/local/musl for a reason, but some people
|
|
|
|
may prefer /opt/musl or $HOME/musl.
|
|
|
|
|
2011-06-28 10:34:47 +08:00
|
|
|
For shared library support, the dynamic linker pathname needs to be
|
|
|
|
hard-coded into every program you link to musl. Ideally, you should
|
|
|
|
leave the path ($syslibdir) set to /lib unless you are unable to
|
|
|
|
install files to /lib, in which case you can change it.
|
|
|
|
|
2011-02-12 13:22:29 +08:00
|
|
|
|
|
|
|
STEP 2: Compiling
|
|
|
|
|
|
|
|
Run "make". (GNU make is required.)
|
|
|
|
|
|
|
|
|
|
|
|
STEP 3: Installation
|
|
|
|
|
|
|
|
With appropriate privileges, run "make install".
|
|
|
|
|
|
|
|
|
|
|
|
STEP 4: Using the gcc wrapper.
|
|
|
|
|
|
|
|
musl comes with a script "musl-gcc" (installed in /usr/local/bin by
|
|
|
|
default) that can be used to compile and link C programs against musl.
|
|
|
|
It requires a version of gcc with the -wrapper option (gcc 4.x should
|
|
|
|
work). For example:
|
|
|
|
|
|
|
|
cat > hello.c <<EOF
|
|
|
|
#include <stdio.h>
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
printf("hello, world!\n");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
musl-gcc hello.c
|
|
|
|
./a.out
|
|
|
|
|
|
|
|
For compiling programs that use autoconf, you'll need to configure
|
|
|
|
them with a command like this:
|
|
|
|
|
|
|
|
CC=musl-gcc ./configure
|
|
|
|
|
|
|
|
Be aware that (at present) libraries linked against glibc are unlikely
|
|
|
|
to be usable, and the musl-gcc wrapper inhibits search of the system
|
|
|
|
library paths in any case. You'll need to compile any prerequisite
|
|
|
|
libraries (like ncurses, glib, etc.) yourself.
|
2011-06-28 10:34:47 +08:00
|
|
|
|
|
|
|
Note: If you want the system headers to behave something like glibc's
|
|
|
|
and expose the kitchen sink by default, you might want to try
|
|
|
|
CC="musl-gcc -D_GNU_SOURCE" instead of just CC=musl-gcc. This is
|
|
|
|
needed for compiling many programs with portability issues.
|