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