rust - GCC 为 build.rs 链接错误的 libpthread
问题描述
我正在尝试从 Linux (NixOS) 交叉编译到 Windows 并遇到一些挫折。
似乎有两个部分共同破坏了构建:
- 我的 Rust 项目中的代码需要多线程,因此需要
libpthread
适用于 Windows 的版本。 - 为了正确构建,我需要一个
build.rs
文件。出于某种原因,Rust 需要一个libpthread
Linux 版本。
有什么问题?好吧,build.rs
必须使用常规 GCC 而不是 MinGW 构建,因为它需要在我的系统上执行。但由于某种原因,GCC 试图链接到 Windowslibpthread
库而不是系统库,因此失败并出现关于不支持库格式的错误。
(失败)替代品
如果我删除build.rs
,项目构建良好。不幸的是,我需要它来获得全部功能。
如果我删除了 Windows 版本libpthread
的build.rs
构建并正确运行,但在构建项目的其余部分时,MinGW 会因缺少库错误而失败。
解决路径?
要么我必须弄清楚为什么 GCC 链接到错误的版本libpthread
,或者我必须-lpthread
完全禁用build.rs
. 我不知道为什么它需要 pthreads,考虑到测试我将它剥离到只有fn main() {}
.
我不知道从哪里开始,而且我已经花了几天的时间来解决这个问题。我会很感激一些帮助!
解决方案
推荐阅读
- ruby - 为什么 end_game 有 NoMethodError?
- uno-platform - 不起作用的 ListView GetContainerForItemOverride 方法
- python - 修复 Tensorflow Conv-Neural-Network 上的 ValueError 和 Warning
- python - ValueError: rate 必须是标量张量或范围 [0, 1) 内的浮点数,得到 1
- c++ - 如何将具有不同参数的函数放入 C++ 中的映射中?
- c - val = &(a->bc) 不等于 x=a->b; val = &(xc) 在 C 中?
- c# - 以管理员身份运行进程后台任务
- html - 拒绝在框架中显示/祖先违反
- vue.js - 在 Promise 中访问 vue 组件方法得到错误,“this”未定义
- .net - Google Cloud Function .NET SDK 要求 Xamarin.IOS.dll 参考