2017-02-24 4 views
0

Ich habe ein sehr einfaches Makefile, das Ziele zum Erstellen einer statischen Bibliothek oder einer dynamischen Bibliothek hat. Standardmäßig wird eine statische Bibliothek erstellt.Makefile zum Erstellen von Bibliothek über mehrere Architekturen

Ich würde gerne in der Lage sein, diese Bibliothek für mehrere Architekturen zu bauen. Ich möchte in der Lage sein, über die Befehlszeile die Architektur anzugeben, für die ich es erstellen möchte, so dass es alles andere intern aufnimmt (Wert für CC, AR usw.).

Was wäre der beste Weg, dies zu tun?

+0

Sie für Cross-Compilierung bedeuten? – kaylum

+0

@kaylum Ja, ich meine für Cross Compilation. –

Antwort

1

Am einfachsten würde ich vorschlagen, Umgebungsvariablen für verschiedene Architekturen im Makefile festzulegen und dann Regeln zu definieren, die sich auf die Variablen für diesen Teil der Architektur beziehen. Einige allgemeine Werte können auch an anderer Stelle festgelegt und verwendet werden.

SPARCCC=/opt/SUNWspro/bin/cross-cc 
GCC=/usr/bin/gcc 
GCCDEBUG=/usr/bin/gcc 
TAR=/usr/bin/tar 

sparc: 
    @echo $(SPARCCC) -o a a.c 
    @echo ${TAR} cvf a.tar a.* 

i386 : 
    @echo $(GCC) -o a a.c 
    @echo ${TAR} cvf a.tar a.* 
    @echo $(GCCDBX) 

Es gibt zwei verschiedene Ziele hier Sparc und i386 und über denen für das Skript ausgeführt wird Ergebnisse liefern, wie unten

$ make sparc 
/opt/SUNWspro/bin/cc -o a a.c 
/usr/bin/tar cvf a.tar a.c a.tar 

$ make i386 
/usr/bin/gcc -o a a.c 
/usr/bin/tar cvf a.tar a.c a.tar 
Verwandte Themen