加载共享库时Cygwin Gcc错误?

时间:2015-05-08 16:10:04

标签: 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

这是什么意思?

8 个答案:

答案 0 :(得分:9)

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

根据Cygwin的常见问题解答

  

问:为什么C:\ cygwin \ usr \ bin在Windows中不可见?

     

答:因为它确实不存在。在cygwin中,/ usr / bin只是指向/ bin的链接。

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

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

答案 1 :(得分:6)

您错过了一个库,请运行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以查看缺少的库。

答案 2 :(得分:1)

(我首先要在评论中提问,但我还没有足够的声誉。)

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

要诊断问题,我建议检查您的PATH变量(甚至清除任何非Cygwin路径并再次尝试编译)和/或使用Dependency Walker查找丢失的DLL(从Cygwin shell开始,所以它可以看到相同的PATH)。 ldd(包括在Cygwin中)也可能提供一些线索,但我不会赌它。

可能需要彻底重新安装Cygwin才能解决问题。

答案 3 :(得分:1)

最有可能的是,你只是在PATH变量中缺少/ usr / bin。 添加'导出PATH = / usr / bin:$ PATH'你的.bashrc文件将解决问题。

答案 4 :(得分:1)

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

令人遗憾的是,该消息并未包含库的名称。幸运的是,cmd.exe会给你这个名字(毕竟它对某些东西有好处);

答案 5 :(得分:0)

您是否包含lib目录的路径? 看起来你不是

我对Cygwin不太熟悉,我主要使用MinGW,但我认为错误信息不言而喻

答案 6 :(得分:0)

我在执行由scilab2C生成的Scilab文件时,也在Windows机器上出现此错误,即工具箱为Windows 32 bit

对于C:\cygwin\usr\i686-pc-cygwin\bin 添加环境变量路径如下:

var

希望这样可以解决您的问题。

答案 7 :(得分:0)

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

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

由于在ConEmu中使用Windows 10 1903构建的最近输入问题,还不得不在2020年1月末对cygwin1.dll进行了修补,但是在此工作中它又做了一次,因此似乎不是问题。

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