繁体   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