Cosa significa costruire dalla sorgente?

1

Sto cercando di installare numpy usando questo . Questo collegamento si apre con queste istruzioni:

These instructions describe how to build NumPy and SciPy libraries from source.

If you just want to use NumPy or SciPy, install pre-built binaries as described in Installing the SciPy Stack.

Se non sbaglio, "costruire" in genere significa compilare i file in quelli leggibili da una macchina e quindi raggrupparli in un eseguibile. Dall'espressione "build from source", deduco che, in primo luogo, ci sono molti modi per creare un file e, in secondo luogo, questo modo particolare costruisce il file dal suo codice sorgente.

Se questo è vero, un file binario pre-costruito è un insieme di file che sono già stati compilati?

    
posta Muno 29.10.2015 - 21:34
fonte

3 risposte

8

If I'm not wrong, to "build" generally means to compile files into machine readable ones and then group them into an executable.

Fondamentalmente sì, anche se il termine è molto più generale di quello. Ad esempio, i file leggibili dalla macchina potrebbero essere librerie piuttosto che eseguibili. Oppure l'output potrebbe essere un insieme di script progettati per essere eseguiti su una VM di qualche tipo piuttosto che un blob di codice macchina nativo. La cosa fondamentale è che si tratta di un processo automatizzato che trasforma file "sorgente" modificati da umani in altri file che sono effettivamente utili.

From the expression "build from source", I infer that, firstly, there are multiple ways to build a file and, secondly, this particular way builds the file from its source code.

Di solito quando questa frase è usata, si riferisce a costruire qualcosa dalla fonte invece di usare una versione pre-costruita di essa. Non esiste un "altro modo" per costruire cose che non coinvolgono l'origine, a meno che il processo di compilazione non sia stato suddiviso in più fasi e per qualche motivo sei coinvolto solo in uno di questi stadi.

If this is true, is a pre-built binary a set of files that have already been compiled?

Nel contesto di un linguaggio compilato tradizionale, in anticipo come C o C ++, è corretto.

    
risposta data 29.10.2015 - 21:55
fonte
3

In generale, la parte "di origine" di "build from source" è ridondante, sebbene sia una ridondanza comunemente inclusa.

Tuttavia, è del tutto plausibile (anche se molto raro, se capita del tutto) di costruire da un formato non sorgente. Ad esempio, si potrebbe compilare il codice sorgente C in LLVM IR e distribuirlo. Gli utenti compilerebbero quindi LLVM IR sulla loro architettura di destinazione. Ciò potrebbe fornire un formato indipendente dall'architettura da distribuire, nascondendo anche il codice effettivo.

is a pre-built binary a set of files that have already been compiled?

Sì, generalmente questo significa compilato in un formato eseguibile o in una libreria collegabile (al contrario di un formato intermedio come sopra).

    
risposta data 29.10.2015 - 21:55
fonte
1

Come hai già scoperto, costruire da fonti generalmente implica andare dalla forma sorgente (cioè non eseguibile, non utilizzabile) alla forma finale di qualcosa (un programma eseguibile, ma anche una libreria condivisa ha una forma binaria).

Ma di solito non c'è più di one per costruire qualcosa: puoi saltare i passaggi, ad es. quando qualcosa dipende da qualcos'altro, puoi ottenere quelle dipendenze già compilate da altrove - o come in questo caso potresti ottenere i binari precompilati.

Sì, un binario precostruito è il prodotto finale che i componenti sono già stati compilati - ciò vale per un eseguibile come libreria condivisa.

    
risposta data 29.10.2015 - 21:57
fonte

Leggi altre domande sui tag