加载共享库时出现 Cygwin Gcc 错误?

Cygwin Gcc error while loading shared libraries?

我在 运行 MinGW 之后安装 Cygwin 已经有一段时间了。但是当我尝试编译控制台时给我:

/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

这是什么意思?

您是否包括了您的 lib 目录的路径? 看来你不是

我对Cygwin不是很熟悉,我主要用MinGW,不过我觉得错误信息不言自明

(我宁愿先在评论中提问,但我的声望还不够。)

您的 cc1 无法加载它需要启动的某些 DLL。查看 Cygwin 源代码,这可以是 LD_PRELOAD 中指定的库,或者更可能是可执行文件所依赖的库。错误消息中的 ? 似乎是 find_first_notloaded_dll (hookapi.cc) 的默认 return 值,以防函数无法确定缺少哪个库。

为了诊断这个问题,我建议检查你的 PATH 变量(或者甚至清除它的任何非 Cygwin 路径并再次尝试编译)and/or 使用 Dependency Walker 来查找缺少的 DLL(从 Cygwin shell 启动它,因此它可以看到相同的 PATH)。 ldd(包含在 Cygwin 中)也可能提供一些线索,但我不会打赌。

可能需要全新安装 Cygwin 才能解决此问题。

您缺少一个库,请运行cygcheck /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exeldd /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/cc1.exe查看缺少的库是什么。

很可能,您只是在 PATH 变量中缺少 /usr/bin。 将 'export PATH=/usr/bin:$PATH' 添加到您的 .bashrc 文件将解决问题。

我遇到了同样的问题,我找到了解决方案。

根据Cygwin的FAQ

Q: Why is C:\cygwin\usr\bin invisible from windows?

A: Because it does not really exist. In cygwin, /usr/bin is just a link to /bin.

所以尝试将 "C:\cygwin\usr\bin" 添加到 PATH 将是徒劳的。

改为将 "C:\cygwin64\bin" 添加到 PATH。希望这会有所帮助:)

我在 windows 机器上执行 scilab2C 生成的 .exe 文件时也遇到了这个错误,即 Scilab

的工具箱

对于Windows 32 bit添加环境变量路径如下:

C:\cygwin\usr\i686-pc-cygwin\bin

希望这能解决您的问题。

添加一些背景信息。我在构建自己的程序并将其链接到 graphviz cgraph.dll 时遇到了同样的问题。事实证明,这与 windows 搜索 DLL 的位置有关(请参阅此处:https://msdn.microsoft.com/en-us/library/7d83bc18.aspx)因此将缺少的库的路径添加到 PATH 应该可以解决问题。

很遗憾,消息中没有包含库的名称。幸运的是 cmd.exe 确实给了你这个名字(毕竟它对某些东西有好处;)

刚刚在尝试使用 make 编译软件包时遇到了这个问题,它需要一些与 make 一起安装的 cygguile dll 文件。

我的解决方案是我不仅跨驱动器迁移了我的 cygwin64 目录,因为扇区大小由于某种原因不匹配,即使驱动程序都在 2TB 以下并且应该使用 512 字节扇区大小。所以我不得不安装一个新系统并将文件移到那里,可能对它们有奇怪的权限。

还必须在 2020 年 1 月末修补 cygwin1.dll,因为 ConEmu 最近在 Windows 10 1903 版本中出现了输入问题,但只是在这个工作中又做了一次,所以看起来并不像成为问题。

通过删除整个目录重新安装 cygwin,首先获得它的所有权...,现在似乎可以工作...