加载共享库时出现 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.exe
或ldd /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,首先获得它的所有权...,现在似乎可以工作...
我在 运行 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.exe
或ldd /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,首先获得它的所有权...,现在似乎可以工作...