la compilazione di applicazioni C ++ in modo che possano lavorare su altri computer come pure
-
22-08-2019 - |
Domanda
Così ho questa applicazione molto semplice SDL voglio essere in grado di passare al mio amico, senza averlo scaricare un intero gruppo di pacchetti SDL.
come posso procedere? Mi è stato detto di usare questa linea per la compilazione: (Notare che io uso Ubuntu Linux e così fa il mio amico, e che questa applicazione viene compilato ed eseguito senza "-Wl, -Bstatic" opzioni più che bene.)
g++ test-sdl.cpp -o test-sdl -Wl,-Bstatic -lSDL_image -lSDL
Ma allora ottengo questo errore:
/usr/bin/ld: cannot find -lgcc_s collect2: ld returned 1 exit status
Perché mi appare questo errore? come lo aggiusto? faccio nemmeno bisogno di farlo in questo modo? C'è un / modo più semplice / alternativo diverso?
Sono chiedere così tanto da voler salvare il mio amico la seccatura di scaricare pacchetti di lui probabilmente non usare mai in ogni caso?
Grazie.
Soluzione
Nel lungo periodo la soluzione migliore sarebbe quella di capire come costruire .deb e poi la gestione dei pacchetti del sistema del tuo amico può prendersi cura di installare tutte le dipendenze necessarie. Se si desidera distribuire i pacchetti più ampiamente, utilizzando il sistema di confezionamento nativo della piattaforma come previsto salverà voi ei vostri utenti un sacco di mal di testa.
Date un'occhiata a guida di Ubuntu a e pbuilder .
Personalmente, ho imparato a fare questo per i miei progetti (su Debian) dal Martin Krafft Debian libro , e trovare utilizzando bla semplifica considerevolmente il processo.
Altri suggerimenti
Si dovrebbe sbarazzarsi del -B, credo che (questo cambia il percorso di ricerca, vedere l'uomo g ++, e quindi non si riesce a trovare più le librerie).
L'interruttore si intende è -static, senza la B.
Modifica in risposta ai commenti: Siamo spiacenti, che era incompleta. Invece, sostituire tutti "-Wl, -Bstatic" con un solo "-static".
Come codelogic ha scritto, -static non è un'opzione per il linker (che implica -Wl).