`
fantaxy025025
  • 浏览: 1252127 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

分析cygwin下报“无法定位程序输入点”的错误--终极解决方法

 
阅读更多

=

=

=

 

cygwin1.dll出错或丢失怎么办?

分析cygwin下报“无法定位程序输入点”的错误?

readline.dll错误?

 

 

终极解决方法:

找到cygwin下的bin目录,找到报错的dll文件名,比如cygwin1.dll报错,那么下面有一个对应的cygwin1.dll.new文件。

备份一下原来的,把xxx.dll.new改成xxx.dll,就好了。

 

为什么这样?

因为安装过程报错了,没有改过来。

或者本来第10步换的,结果第5步错了,那么第10步就没有执行。

具体先不深究了,大概推理如此。

 

 

下文的解决方法是有问题的,也很麻烦。

========================================

http://blog.sina.com.cn/s/blog_4c31626a010008rn.html

现象:
 
    之前网上下了一个cygwin的本地安装版本,装了一些常用的命令行工具集。结果执行最为常用的ls命令时总是报如下的错误:“无法定位程序输入点 strtoumax 于动态链接库 cygwin1.dll 上”。地球人都知道,unix下不能使用ls命令,尘世间最痛苦的事莫过于此啦~
 
原因:
 
    在网上搜了一下,看到关于cygwin的介绍:
 
    “cygwin的工作机制:cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交*编译器来生成可以在 windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。”
 
    从上面的文字了解到,前面报错的动态链接库cygwin1.dll实质就是一个操作系统的接口适配层,所报的错误应该是在该库中没有找到被ls命令调用的接口函数strtoumax。因此,造成该错误的原因极有可能是该动态库版本与所用的ls命令不匹配。
 
解决:
 
    分析出原因,解决的方法就再简单不过啦。从网上下载新的cygwin1.dll。和本地安装的比较一下文件版本号:原来的版本号是1005.15.0.0,新下载的版本号是1005.18.0.0。再用Dependency Walker看一下新下载的dll导出的接口,果然有strtoumax。使用新dll替换原来bin目录下的dll,问题就解决啦^_^

 

 

 

 

 

=

=

=

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics