Teraz używam clang kompilacji mój plik .c do pliku .s. I użyłem API llvm, modyfikując IR. Jednak teraz nie mogę zapisać zmodyfikowanego pliku IR do pliku. Chcę użyć "LLVMWriteBitcodeToFile", ale nie mogę znaleźć struktury "LLVMOpaqueModule"; Chcę użyć "WriteBitcodeToFile", zawsze pokazuje mi "niedopasowanie typu". Chcę również wiedzieć, jak zbudować plik IR do pliku wykonywalnego.Jak zapisać IR do pliku i zbudować go do pliku wykonywalnego?
Następny są dwie metody użyć, aby zapisać moduł:
1, użyj najpierw WriteBitcodeToFile
bool unbuffered = false;
llvm::raw_ostream ro(unbuffered);
WriteBitcodeToFile(m, ro);
2, drugi wykorzystują LLVMWriteBitcodeToFile
const char *Path = "hello2.s";
int ans = LLVMWriteBitcodeToFile(m, Path);
uwaga: M jest punktem Instancja modułu
Poprawną funkcją do użycia jest w rzeczywistości 'WriteBitcodeToFile' z' Bitcode/ReaderWriter.h'. Jeśli nie możesz go użyć, powinieneś podać kod, który próbujesz skompilować w tym pytaniu. – Oak
Tak, podążaj za prototypem WriteBitcodeToFilevoid: WriteBitcodeToFile (const Module * M, raw_ostream &Out); –
Tak, Follow to prototyp WriteBitcodeToFilevoid: WriteBitcodeToFile (const Module * M, raw_ostream &Out); kiedy uruchamiam rawStream, nie stać mnie na .. typ dopasowania parametr, który ma defaulted parametr –