簡體   English   中英

spotifyd,交叉編譯arm64

[英]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.

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