Come si generano i binari eseguibili dal lato C++ di LLVM?generazione binaria da LLVM
Attualmente sto scrivendo un compilatore di giocattoli e non sono abbastanza sicuro di come eseguire l'ultimo passaggio della creazione di un eseguibile dall'IR.
L'unica soluzione che attualmente vedo è scrivere il codice bit e quindi chiamare llc utilizzando system
o simile. C'è un modo per farlo dall'interfaccia C++?
Sembra che sarebbe una domanda comune, ma non riesco a trovare nulla su di esso.
Grazie, il codice llvm-ld è esattamente ciò di cui avevo bisogno. – cobbal
Se leggi la documentazione di llvm-ld, dice che il suo output è ancora bytecode, non un binario nativo. Il bytecode che emette è effettivamente collegato nel senso che tutti gli input sono presenti nell'output. Per poter funzionare come una sostituzione in sostituzione di ld, llvm-ld deve generare il solito file a.out, ma non è nemmeno un eseguibile nativo. È uno script di shell che richiama l'utilità lli di LLVM che esegue il bytecode (tramite il suo interprete o tramite la compilazione JIT). Se vuoi davvero un eseguibile, devi compilare il tuo LLVM IR o bytecode in assembly ed eseguirlo tramite gcc. – mgadda