| |
| A quick-and-simple guide to installing musl: |
| |
| |
| STEP 1: Configuration |
| |
| Edit config.mak to override installation prefix, compiler options, |
| 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. |
| |
| 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. |
| |
| 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. |
| |
| |
| 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. |
| |
| 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. |