ASIM team
LIP6 Laboratory
Paris, France

next up previous contents
Next: Installation des démons Unix Up: Installation Previous: Obtention de la distribution

Compilation de la distribution

Après avoir créé un compte de login mpc, il faut décompresser et désarchiver la distribution :



% gzip -dc emulateur-3.0.tar.gz | ( cd ~mpc/; tar xf - )
% cd ~mpc/mpc-3.0/
%




Les fonctions des différents répertoires et fichiers de la distribution sont indiquées sur la figure 3.1.


  
Figure 3.1: Contenu de la distribution logicielle source
\begin{figure}
 \begin{center}
{\scriptsize

\begin{tabular}
{\vert l\vert l\ver...
 ...{sources de modload modifiées} \\ \hline\end{tabular}}
 \end{center}\end{figure}

La distribution se conforme au standard de portabilité GNU : elle est construite à partir d'Autoconf et d'Automake.

Il faut donc lancer le script configure qui va générer les différents Makefiles en fonction de l'environnement du système.



% ./configure 
creating cache ./config.cache
checking whether make sets ${MAKE}... yes
checking for gcc... gcc
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking how to run the C preprocessor... gcc -E
checking whether gcc needs -traditional... no
checking for a BSD compatible install... /usr/local/bin/install -c
checking whether ln -s works... yes
checking for ranlib... ranlib
checking for cat... /bin/cat
checking for ar... /usr/bin/ar
checking for makedepend... /usr/X11R6/bin/makedepend
checking for chmod... /bin/chmod
checking for modload... /sbin/modload
checking for modunload... /sbin/modunload
checking for modstat... /usr/bin/modstat
checking for mknod... /sbin/mknod
checking for rm... /bin/rm
checking for ls... /bin/ls
checking for id... /usr/bin/id
checking for test... /bin/test
checking for cut... /usr/bin/cut
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking for rpcgen... /usr/bin/rpcgen
checking whether cross-compiling... no
checking for ANSI C header files... yes
updating cache ./config.cache
creating ./config.status
creating Makefile
creating src/Makefile
creating modules/Makefile
creating examples/Makefile
creating docs/Makefile
%




Il faut maintenant compiler les différentes sources :



% gmake
for subdir in src modules examples docs; do             \
  target=`echo all-recursive | sed s/-recursive//`; \
  echo making $target in $subdir;       \
  (cd $subdir && gmake $target) \
   || case "" in *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$fail"
making all in src
gmake[1]: Entering directory `/tmp/mpc-3.0-Alpha/src'
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O useraccess.c
rm -f libuseraccess.a
ar cru libuseraccess.a useraccess.o 
ranlib libuseraccess.a
/usr/bin/rpcgen -c rpctransport.x > rpctransport_xdr.h
/usr/bin/rpcgen rpctransport.x
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O hslclient.c
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O rpctransport_clnt.c
gcc  -o hslclient hslclient.o rpctransport_clnt.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O hslserver.c
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O rpctransport_svc.c
gcc  -o hslserver hslserver.o rpctransport_svc.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O malloc.c
gcc  -o malloc malloc.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O virt2phys.c
gcc  -o virt2phys virt2phys.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O readphys.c
gcc  -o readphys readphys.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O writephys.c
gcc  -o writephys writephys.o  
gmake[1]: Leaving directory `/tmp/mpc-3.0-Alpha/src'
making all in modules
gmake[1]: Entering directory `/tmp/mpc-3.0-Alpha/modules'
gcc -c -DSTDC_HEADERS=1 -I. -DKERNEL -Wall -DDEBUG_HSL -DMODNAME=\"hsldriver\" -O driver.c
gcc -c -DSTDC_HEADERS=1 -I. -DKERNEL -Wall -DDEBUG_HSL -DMODNAME=\"hsldriver\" -O put.c
gcc -c -DSTDC_HEADERS=1 -I. -DKERNEL -Wall -DDEBUG_HSL -DMODNAME=\"hsldriver\" -O ddslrpp.c
gcc -c -DSTDC_HEADERS=1 -I. -DKERNEL -Wall -DDEBUG_HSL -DMODNAME=\"hsldriver\" -O ddslrpv.c
ld -r -o hsldriver driver.o put.o ddslrpp.o ddslrpv.o
gmake[1]: Leaving directory `/tmp/mpc-3.0-Alpha/modules'
making all in examples
gmake[1]: Entering directory `/tmp/mpc-3.0-Alpha/examples'
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O addlpe.c
gcc  -o addlpe addlpe.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O receivelpe.c
gcc  -o receivelpe receivelpe.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O testsend2.c
gcc  -o testsend2 testsend2.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O testrecv2.c
gcc  -o testrecv2 testrecv2.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O testsendv.c
gcc  -o testsendv testsendv.o  
gcc -c -DSTDC_HEADERS=1  -I. -I.    -g -O testrecvv.c
gcc  -o testrecvv testrecvv.o  
gcc  -o testuseraccess testuseraccess.o ../src/libuseraccess.a 
gmake[1]: Leaving directory `/tmp/mpc-3.0-Alpha/examples'
making all in docs
gmake[1]: Entering directory `/tmp/mpc-3.0-Alpha/docs'
/bin/cat specif.c | /usr/bin/sed 's/\([{}]\)/@\1/g' > specif.c.texi
makeinfo -I. pcihsl.texi -o ./pcihsl.info
Making info file `./pcihsl.info' from `pcihsl.texi'.
gmake[1]: Leaving directory `/tmp/mpc-3.0-Alpha/docs'
%




Nous devons compiler modload, dont les sources se trouvent dans le répertoire mpc/mpc-3.0/archive/modload, car la version standard de FreeBSD ne suffit pas à l'utilisation qu'on veut en faire. En effet, le module CMEMDRIVER, gestionnaire de mémoire physique, a besoin de réserver de la RAM au moment de l'amorçage d'Unix, alors que le répertoire /usr n'est pas encore monté. Cela pose un problème à l'utilisation du modload livré dans la distribution de FreeBSD : ce dernier utilise /usr/bin/ld, qui n'est pas disponible à ce moment du boot. Le modload de la distribution MPC appelle quant-à-lui /etc/mpc/ld.



% cd archive/modload/
% make LDFLAGS=-static
cc -O   -c modload.c
cc -O   -static -o modload modload.o  
%





next up previous contents
Next: Installation des démons Unix Up: Installation Previous: Obtention de la distribution

Server design A. Fenyö
mpc@mpc.lip6.fr - contact people
About this Web Site
$Date: 1998/02/14 17:06:25 $
Copyright © 1997-1998 UPMC/LIP6
All rights reserved