www.dedoshop.com
Risultati da 1 a 14 di 14
Like Tree3Likes
  • 1 Post By Pa0l0ne
  • 1 Post By Pa0l0ne
  • 1 Post By Pa0l0ne

Discussione: Compilare i miei progetti

  1. #1
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208

    Compilare i miei progetti

    Ciao a tutti,
    vi scrivo oggi per chiedervi aiuto riguardo la compilazione in libxenon. Premetto di conoscere abbastanza bene il C ma non linux (lo uso ma non so fare un passaggio richiesto nella compilazione che scriverò dopo).
    Finalmente ho un po' di tempo da dedicare ai miei vari smanettamenti, di conseguenza ho intenzione di creare alcune applicazioni avviabili da xell, giusto per provare, per creare qualcosa di utile e carino . Ok, ho installato il toolchain e le libxenon sul mio ubuntu 10.04 e ho iniziato a scrivere il codice, il codice che ho "partorito" è nel file "xenon.c" sulla Scrivania, come lo compilo? Ho letto che bisogna creare un makefile diverso per ogni progetto ma non ho idea di come si faccia.. Ho sempre compilato su windows o su ubuntu ma solo tramite il fido gcc quindi non so proprio che fare.. se do il comando "xenon-gcc xenon.c" mi da una sfilza di errori e non sembrano legati alla compilazione..

    Grazie a tutti quelli che mi risponderanno

  2. #2
    Pa0l0ne
    Guest
    Ciao lapht.

    Dai un'occhiata a questo basilare Hello World:

    CODICE:

    Codice:
     #include <stdio.h>
     #include <stdlib.h>
     #include <input/input.h>
     #include <xenos/xenos.h>
     #include <console/console.h>  
    
     void mainInit()
     { 
         //init
         xenos_init(VIDEO_MODE_AUTO);
         console_init();
     
         kmem_init();
         usb_init();
         usb_do_poll();
     }
     int main()
     {
         mainInit();
         printf("CHI E' IL MODDER PIU' RUGGENTE E MARSUPIALE DEL MONDO?\n");
     
         struct controller_data_s oldc;
         while(1)
         {
             struct controller_data_s c;
             if (get_controller_data(&c, 0))
             {
     
                 if((c.a)&&(!oldc.a))
                 {
                     printf("DEVI ESSERE PROPRIO UNO SPAGOTCHOLOIDE PER NON SAPERLO\n");
                 }
                 if((!c.a)&&(oldc.a))
                 {
                     printf("PREMI A PER SAPERLO\n");
                 }
                 oldc=c;
             }
             usb_do_poll();
         }
         return 0;
     }
    Questo è un MAKEFILE comprensivo di commenti esplicativi:

    Codice:
    #---------------------------------------------------------------------------------
    # Clear the implicit built in rules
    #---------------------------------------------------------------------------------
    .SUFFIXES:
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(DEVKITXENON)),)
    $(error "Please set DEVKITXENON in your environment. export DEVKITXENON=<path to>devkitPPC")
    endif
    
    include $(DEVKITXENON)/rules
    
    #---------------------------------------------------------------------------------
    # TARGET is the name of the output
    # BUILD is the directory where object files & intermediate files will be placed
    # SOURCES is a list of directories containing source code
    # INCLUDES is a list of directories containing extra header files
    #---------------------------------------------------------------------------------
    TARGET        :=    $(notdir $(CURDIR))
    BUILD        :=    build
    SOURCES        :=    source
    DATA        :=    data  
    INCLUDES    :=
    
    #---------------------------------------------------------------------------------
    # options for code generation
    #---------------------------------------------------------------------------------
    
    CFLAGS    = -ffunction-sections -fdata-sections -g -O2 -Wall $(MACHDEP) $(INCLUDE)
    CXXFLAGS    =    $(CFLAGS)
    
    LDFLAGS    =    -g $(MACHDEP) -Wl,--gc-sections -Wl,-Map,$(notdir $@).map
    
    #---------------------------------------------------------------------------------
    # any extra libraries we wish to link with the project
    #---------------------------------------------------------------------------------
    LIBS    :=    -lxenon -lm
    
    #---------------------------------------------------------------------------------
    # list of directories containing libraries, this must be the top level containing
    # include and lib
    #---------------------------------------------------------------------------------
    LIBDIRS    :=
    
    #---------------------------------------------------------------------------------
    # no real need to edit anything past this point unless you need to add additional
    # rules for different file extensions
    #---------------------------------------------------------------------------------
    ifneq ($(BUILD),$(notdir $(CURDIR)))
    #---------------------------------------------------------------------------------
    
    export OUTPUT    :=    $(CURDIR)/$(TARGET)
    
    export VPATH    :=    $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
                        $(foreach dir,$(DATA),$(CURDIR)/$(dir))
    
    export DEPSDIR    :=    $(CURDIR)/$(BUILD)
    
    #---------------------------------------------------------------------------------
    # automatically build a list of object files for our project
    #---------------------------------------------------------------------------------
    CFILES        :=    $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
    CPPFILES    :=    $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
    sFILES        :=    $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
    SFILES        :=    $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
    BINFILES    :=    $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
    
    #---------------------------------------------------------------------------------
    # use CXX for linking C++ projects, CC for standard C
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(CPPFILES)),)
        export LD    :=    $(CC)
    else
        export LD    :=    $(CXX)
    endif
    
    export OFILES    :=    $(addsuffix .o,$(BINFILES)) \
                        $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
                        $(sFILES:.s=.o) $(SFILES:.S=.o)
    
    #---------------------------------------------------------------------------------
    # build a list of include paths
    #---------------------------------------------------------------------------------
    export INCLUDE    :=    $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
                        $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
                        -I$(CURDIR)/$(BUILD) \
                        -I$(LIBXENON_INC)
    
    #---------------------------------------------------------------------------------
    # build a list of library paths
    #---------------------------------------------------------------------------------
    export LIBPATHS    :=    $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
                        -L$(LIBXENON_LIB)
    
    export OUTPUT    :=    $(CURDIR)/$(TARGET)
    .PHONY: $(BUILD) clean
    
    #---------------------------------------------------------------------------------
    $(BUILD):
        @[ -d $@ ] || mkdir -p $@
        @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
    
    #---------------------------------------------------------------------------------
    clean:
        @echo clean ...
        @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).elf32
    
    #---------------------------------------------------------------------------------
    else
    
    DEPENDS    :=    $(OFILES:.o=.d)
    
    #---------------------------------------------------------------------------------
    # main targets
    #---------------------------------------------------------------------------------
    $(OUTPUT).elf32: $(OUTPUT).elf
    $(OUTPUT).elf: $(OFILES)
    
    -include $(DEPENDS)
    
    #---------------------------------------------------------------------------------
    endif
    #---------------------------------------------------------------------------------
    
    #source/ffs_content.c: genffs.py data/ps.psu data/vs.vsu
    #    python genffs.py > source/ffs_content.c
    
    run: $(OUTPUT).elf32
        cp $(OUTPUT).elf32 /tftpboot/xenon
        $(PREFIX)strip /tftpboot/xenon
    #    /home/dev360/run
    E' necessario avere un Makefile per ogni programma che intendi compilare. Il Makefile si occuperà di verificare l'utilizzo dei corretti "includes"
    Ultima modifica di Pa0l0ne; 29-10-12 alle 17: 43
    zeruel85 likes this.

  3. #3
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208
    Grazie mille mi sei stato di grande aiuto, non riuscivo a trovare makefile commentati.. giusto una curiosità:
    quella è la tua applicazione che ho provato ieri sera ma è un file .xex avviabile dalla dash, come hai fatto a renderlo tale?

  4. #4
    Pa0l0ne
    Guest
    ....il codice che ti ho postato sopra fà uso delle libxenon, quello che tu hai provato in XEX è scritto invece per XDK e viene compilato in Visual Studio 2010 + XDK.

    Guarda il codice:

    Codice:
    #include "stdafx.h"
    #include "AtgInput.h"
    #include "AtgConsole.h"
    #include <string>
    ATG::Console daConsole;
    using namespace std;
    void doConsole(string daText);
    void __cdecl main()
    {
    doConsole("CHI SARA' MAI IL MODDER PIU' RUGGENTE E MARSUPIALE DEL MONDO?");
    for(;;)
    {
      ATG::GAMEPAD* pGamepad = ATG::Input::GetMergedInput();//Get the Inputs ATM
            if( pGamepad->wPressedButtons & XINPUT_GAMEPAD_A )//If buttons are pressed and the button pressed is the a button
            {
       daConsole.Format("\nRRRRRRRROOOOOOOAAAAAARRRRRR Devi essere proprio spagotcholoide per non saperlo!");
            }
    }
    }
    void doConsole(string daText)
    {
    daConsole.Create( "game:\\Media\\Fonts\\Arial_16.xpr",  D3DCOLOR_XRGB(0, 0, 0),  D3DCOLOR_XRGB(0,200,0) );//First D3D is the Background and the second is the text color
    daConsole.Format((" - "+daText+" - ").c_str());//The format function adds text to the console
    //daConsole.Format("\ntest");
    }
    Il risultato a video è lo stesso...ma puoi dire lo stesso del codice e delle dipendenze?

    In bocca al lupo....e non demordere!
    zeruel85 likes this.

  5. #5
    God L'avatar di zeruel85
    Data Registrazione
    Jan 2012
    Messaggi
    15,946
    Roarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

    lol xd

  6. #6
    Pa0l0ne
    Guest
    Un doppio RRRRROOOOAAARRRR ci stà sempre bene.

  7. #7
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208
    Grazie mille appena ho un po' di voglia metto l'RGLoader e continuo le mie prove con l'XDK
    Ora mi concentro sulle libxenon dici che posso usare il toolchain con cygwin? Perchè sul portatile non ho linux e avevo intenzione di provare su windows

  8. #8
    Pa0l0ne
    Guest
    Onestamente non ho mai provato, dovrebbe andare, non saprei...
    Ti consiglio una Ubuntu Virtualizzata, ti incazzi meno.

  9. #9
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208
    Invece mi incazzo perchè non riesco a mettere la risoluzione giusta xD maledettissimo windows 8 e relativi drivers

  10. #10
    Pa0l0ne
    Guest
    Dillo a Zeruel che mi piglia per il culo perchè viaggio ancora con XP.....
    lapht likes this.

  11. #11
    God L'avatar di zeruel85
    Data Registrazione
    Jan 2012
    Messaggi
    15,946
    Mah, io ti avevo consigliato il 7, mica l'8.
    Non sono un fanboy di Windows come molti possono confermarvi, però non ho mai avuto problemi grossi con Win7, devo dirlo chiaro e tondo. Un po' lentino alcune volte, ma come stabilità non mi dispiace affatto.

    Invece mi rode il culo che non mi va più il syslog-ng su Arch e non mi capisco come settarlo. Ora che stanno migrando a systemd io mi ritrovo con una configurazione ibrida, perché proprio come Pa0l0ne, faccio sempre fatica ad adattarmi alle novità.

    Never update a running system!

  12. #12
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208
    ahahah io lo devo usare per la scuola e preferisco tenermi un solo sistema xD
    giustamente ora in informatica stiamo facendo il .NET con le app metro D:

  13. #13
    God L'avatar di zeruel85
    Data Registrazione
    Jan 2012
    Messaggi
    15,946
    Ma hai installato i guest additions sulla macchina guest? Altrimenti non credo che la risoluzione si setterà mai ottimalmente.

  14. #14
    Vip Member L'avatar di lapht
    Data Registrazione
    Oct 2011
    Località
    Como
    Messaggi
    1,208
    Non li installa perchè non ho i drivers video sul pc xD ora devo vedere magari hanno aggiornato il sito

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  

realizzazione siti internet ed e-commerce mugello