簡體   English   中英

如何使Bazel包含用於主機架構以外的其他體系結構的JRE?

[英]How can I get Bazel to include a JRE for a different architecture from the host computer?

我希望能夠使用Bazel將Java應用程序從Linux工作站交叉編譯到Raspberry Pi。

我遇到的基本問題似乎是,生成的啟動腳本引用了runfiles目錄中的java啟動器,並基於主機對這些文件進行了二進制化。

簡單地將--cpu設置為armeabi-v7a似乎沒有任何效果,盡管我可以使用Linaro工具鏈使CROSSTOOLS與構建C ++二進制文件一起工作,但我找不到任何文檔可以向我展示如何類似地替代Java工具。

我花了一些時間來擺弄java_runtime,java_runtime_suite和java_toolchain規則,但是遇到了一個問題,盡管我可以設置java_toolchain,但似乎無法獨立改變主機和目標Java體系結構-只是版本。

如果我修改Java啟動器腳本並將JAVABIN硬編碼為“ / usr / bin / java”,則一切正常(示例GPRC“迎賓服務器”正確響應),所以我覺得我真的與擁有一個可用的設置。 我意識到我可以提供一個可以將所有內容傳遞到/ usr / bin / java的啟動器,但是我喜歡Bazel構建的自包含特性,並且更喜歡在其結構中使用。

那么,我想念什么? 使用Bazel交叉編譯Java的正確/預期方法是什么?

您可以使用--javabase參數指定用於目標配置(Raspberry Pi)的JVM,使用--host_javabase參數指定在構建過程中使用的JVM。

如果將--javabase指向一個java_runtime規則,該規則告訴JVM在Raspberry PI上的位置,則它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM