[英]spotifyd, cross compiling for arm64
我正在嘗試使用cargo build --release --target aarch64-unknown-linux-gnu
為我的aarch64架構編譯spotifyd,所有依賴項都已安裝,到目前為止,編譯工作正常。
但是,最后一步( Compiling spotifyd v0.1.1 (file:///home/ubuntu/spotifyd)
)失敗了:
= note: aarch64-linux-gnu-ld.gold: -Wl,--as-needed: unknown option
aarch64-linux-gnu-ld.gold: use the --help option for usage information
我的貨物配置設置為使用aarch64鏈接器:
/root/.cargo/config
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-ld.gold"
看來, -Wl
不可用內aarch64-linux-gnu-ld.gold
,都是有任何替代aarch64-linux-gnu-ld.gold
,我可以使用還是可以移除-Wl
從貨物標志?
感謝您的意見。
鏈接器不接受“-Wl”作為選項,它是gcc編譯器驅動程序的命令行參數。
Gcc使用此選項將命令行參數傳遞給鏈接器,驅動程序gcc將在其中調用.o(對象)文件。
請參閱gcc文檔3.14鏈接選項
輪候冊,選項
傳遞選項作為鏈接器的選項。 如果選項包含逗號,則會在逗號中將其拆分為多個選項。
看到這些解釋中的任何一個(只是跳到底部):
Gentoo Wiki,“ 項目:質量保證/按需 ”,“編譯失敗,無法識別的選項”部分。
請注意所使用的Binutils Gold Linker的版本,請參閱Bug 18859作為示例。 始終檢查錯誤報告,但錯誤不是問題。
直接回答你的最后一個問題“我可以從貨物中移除-Wl”,是的,你可以,但這是錯誤的做法; 該命令剝離未使用的代碼。
此選項允許鏈接器忽略(即,不鏈接)其命令行上提供的某些庫(如果它們實際上未被正在創建的共享庫使用)。
你想要做的是將鏈接器更改為aarch64-linux-gnu-gcc並且鏈接應該可行。 請參閱關於Reddit“ 交叉編譯和鏈接器標志 ”的martinhath的問題。
所以你想要的是:
/root/.cargo/config
[target.aarch64未知-Linux的GNU]
linker =“aarch64-linux-gnu- gcc ”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.