rust error: linking with `cc` failed: exit code: 1

学习rust要记住 编译器永远是对的

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" []
  = note: ld: entry point (_main) undefined. for architecture x86_64
          clang: error: linker command failed with exit code 1 []

这个错误消息告诉我们,链接器不能找到默认的入口点函数,它被命名为main——出于一些原因,macOS的所有函数名都被加以下划线_前缀。要设置入口点函数到_start,我们传送链接器参数-e: 这些操作都不用
很简单的操作呢
xcode-select --install解决
brew install cmake

统一所有的编译命令
我们的裸机程序已经可以在多个平台上编译,但对每个平台,我们不得不记忆和使用不同的编译命令。为了避免这么做,我们创建.cargo/config文件,为每个平台填写对应的命令:

# in .cargo/config
 
[target.'cfg(target_os = "linux")']
rustflags = ["-C", "link-arg=-nostartfiles"]
 
[target.'cfg(target_os = "windows")']
rustflags = ["-C", "link-args=/ENTRY:_start /SUBSYSTEM:console"]
 
[target.'cfg(target_os = "macos")']
rustflags = ["-C", "link-args=-e __start -static -nostartfiles"]

这里,rustflags参数包含的内容,将被自动添加到每次rustc调用中。我们可以在官方文档[3]中找到更多关于.cargo/config文件的说明。

做完这一步后,我们使用简单的一行指令——

cargo build

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值