我已經創建了一個玩具語言來生成IR代碼,並使用WriteBitcodeToFile(C API)將該代碼寫入二進制文件。結果是一個my-file.bc文件。如何使llvm .bc文件可執行文件?
在這個文件中,我定義了一個main()函數,它不接受任何參數並返回一個int64(我應該將返回類型改爲byte)。我如何使這個.bc文件成爲一個可執行文件。我正在運行Linux。
Fredrik
我已經創建了一個玩具語言來生成IR代碼,並使用WriteBitcodeToFile(C API)將該代碼寫入二進制文件。結果是一個my-file.bc文件。如何使llvm .bc文件可執行文件?
在這個文件中,我定義了一個main()函數,它不接受任何參數並返回一個int64(我應該將返回類型改爲byte)。我如何使這個.bc文件成爲一個可執行文件。我正在運行Linux。
Fredrik
可以生成LLC的目標文件,然後使用GCC創建可執行:
llc -filetype=obj my-file.bc
gcc my-file.o
./a.out
你可以閱讀更多關於LLC的http://llvm.org/docs/CommandGuide/llc.html。
可以用lli命令執行bc文件。但是,這不會創建獨立的可執行產品。
總是有使用llc編譯爲彙編的選項,您可以從中生成可執行文件。
是的,它說:「彙編語言輸出可以通過本地彙編器和鏈接器傳遞以生成本機可執行文件。」我將如何在Linux中做到這一點? –
我想如果您不確定如何使用匯編器和鏈接器,我的建議不是一個好的途徑。相反,您可能會嘗試更多的成功嘗試替代構建方法,這種方法不會導致最終的位代碼文件,而是直接轉到生成可執行文件。 –
是的,說實話,自從我上次使用匯編程序以來,Win95/Dos已經有15年了,自從我上次鏈接二進制文件以來,可能還有13年。請記住,我從來沒有使用過Linux。所以這是一套爲我設定的新工具。我希望得到啓動。我似乎無法滿足谷歌的精神。 –