gpt4 book ai didi

haskell - 除非以管理员身份运行,否则 stack ghci 无法加载 pthread

转载 作者:行者123 更新时间:2023-12-02 17:13:46 26 4
gpt4 key购买 nike

当我在一个全新的项目上运行 stack ghci 时,它无法加载:

$ stack new repro simple
Downloading template "simple" to create project "repro" in repro\ ...

(省略其他输出以使问题更具可读性。)

$ cd repro/

$ stack ghci
Using main module: 1. Package `repro' component repro:exe:repro with main-is file: C:\Users\mark\Desktop\repro\src\Main.hs
Building all executables for `repro' once. After a successful build of all of them, only specified executables will be rebuilt.
repro> configure (exe)
Configuring repro-0.1.0.0...
repro> initial-build-steps (exe)
Configuring GHCi with the following packages: repro
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
<command line>: user specified .o/.so/.DLL could not be loaded (addDLL: pthread or dependencies not loaded. (Win32 error 5))
Whilst trying to load: (dynamic) pthread
Additional directories searched: C:\\Users\\mark\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20180531\\mingw64\\lib
C:\\Users\\mark\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20180531\\mingw64\\bin
C://Users//mark//AppData//Local//Programs//stack//x86_64-windows//ghc-8.6.5//mingw//bin/
C://Users//mark//AppData//Local//Programs//stack//x86_64-windows//ghc-8.6.5//mingw//bin/../lib/
C://Users//mark//AppData//Local//Programs//stack//x86_64-windows//ghc-8.6.5//mingw//bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/lib/../lib/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../lib/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/lib/
C:/Users/mark/AppData/Local/Programs/stack/x86_64-windows/ghc-8.6.5/mingw/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../
C:\Windows\system32

这是在 Windows 10 (x64) 上。我有另一台具有类似操作系统配置和堆栈版本的机器,在那台机器上,我没有任何问题。这似乎是一个环境问题,但我不明白它是什么。

我从 Git Bash 运行,如果我以管理员身份运行它,它会起作用:

$ stack ghci
Using main module: 1. Package `repro' component repro:exe:repro with main-is file: C:\Users\mark\Desktop\repro\src\Main.hs
Building all executables for `repro' once. After a successful build of all of them, only specified executables will be rebuilt.
repro> initial-build-steps (exe)
Configuring GHCi with the following packages: repro
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( C:\Users\mark\Desktop\repro\src\Main.hs, interpreted )
Ok, one module loaded.
Loaded GHCi configuration from C:\\Users\\mark\\AppData\\Local\\Temp\\haskell-stack-ghci\\2524149e\\ghci-script
*Main>

我在 Windows 上使用 Stack 已经很多年了,这是我第一次必须以管理员身份运行,这真的让我很困扰。可能是什么问题,我该如何解决?

FWIW,这是堆栈版本:

$ stack --version
Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2

这与我在另一台计算机上使用的版本相同,但未出现该问题。

此处的示例是从运行 Git Bash 中复制的,但如果我使用 cmd,问题是相同的。

最佳答案

感谢 Fyodor Soikin,我能够找到这个问题。

摘要

授予您的用户帐户对 pthread.dll读取和执行权限。

详细信息

我不明白为什么我的这台新机器出现了这个问题,而另一台具有相同操作系统和基本相同设置的机器却没有任何问题。

经过仔细检查,发现其他机器根本没有pthread.dll文件

不过,它确实有相当多的 pthread.h 副本,我想这足以让 Stack 构建代码。

新机器的几个地方都有pthread.dll,其中包括C:\Windows\System32\DriverStore的子目录,这对我来说意味着这个文件最初是通过新机器使用的驱动程序到达,但旧机器没有。它在 C:\Windows\System32 中还有一个 pthread.dll 的副本,但该文件被异常锁定。我自己的用户帐户没有该文件的读取执行权限,但我可以在管理员模式下查看和更改权限。

我向本地用户组授予了该文件的读取和执行权限,之后一切似乎都像以前在我的其他计算机上所做的那样工作。

关于haskell - 除非以管理员身份运行,否则 stack ghci 无法加载 pthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com