cygwin利器cygcheck

1670阅读 0评论2014-03-14 badloong
分类:LINUX

最近由于工作需要,安装cygwin。或是最近的cygwin真是相当的坑爹啊,下载之后的完整包大概有3G多一点,如果选择完全安装呢,则需要10G以上了。我尝试过,但是在9G多的时候,实在受不了,直接abort。然后开始了悲摧的选择安装之旅。

由于包实在太多,选择安装其实是一件前期的事情。总算安装了一个大概5G的系统,可是perl却不能用,显示的就是某个动态链接库没有办法加载?但是却又不知道是哪个。在网上找了一堆,最近嘛,这网也破,用baidu搜不到有价值的东西,用google吧,你不一定能够打开页面,打开了也不一定能够搜,搜到了,又不一定能够打开。不过,耐心问题得到回报,在网上看了一个好命令,叫做cygcheck,就是用来检查某个可执行文件依赖于哪些库,这些库在路径在哪里或者不存在。下面是正常的情况:
  1. #cygcheck /usr/bin/perl
  2. D:\cygwin\bin\perl.exe
  3.   D:\cygwin\bin\cygperl5_10.dll
  4.     D:\cygwin\bin\cygcrypt-0.dll
  5.       D:\cygwin\bin\cygwin1.dll
  6.         C:\WINDOWS\system32\KERNEL32.dll
  7.         C:\WINDOWS\system32\ntdll.dll
  8.     D:\cygwin\bin\cyggcc_s-1.dll
  9.     D:\cygwin\bin\cygssp-0.dll
是不是一目了然啊。如果缺少了某个文件,则显示如下:
    1. #cygcheck /usr/bin/perl
    2. D:\cygwin\bin\perl.exe
    3.   D:\cygwin\bin\cygperl5_10.dll
    4. cygcheck: track_down: could not find cygcrypt-0.dll
    5.       D:\cygwin\bin\cygwin1.dll
    6.         C:\WINDOWS\system32\KERNEL32.dll
    7.         C:\WINDOWS\system32\ntdll.dll
    8.     D:\cygwin\bin\cyggcc_s-1.dll
    9.     D:\cygwin\bin\cygssp-0.dll
那么就显示缺少了cygcrypt-0.dll。不过,现在还不知道是否有工具能够知道哪个dll在哪个包里面。我安装系统的时候,找了半天也没有找到cygcrypt-0.dll在哪里,最后在老版本的的cygwin里面拷贝过来一个,居然也能够用了。cygcheck也可心带上参数,来寻找包的,如
  1. cygcheck -p 'cygcrypt\-0\.dll'
需要使用转义,但是由于还不知道如何让cygcheck通过代理服务器,所以这个功用还没有做实验。[号外:补充一下,可以直接在 查找,在上面找了一下,对就cygcrypt-0.dll的包应该是,上次我上载的包中,就没有这个,重新下载了这个包,应该算是搞定了。]

与cygcheck功能类似的是标准的ldd命令,但在cygwin的世界里,如果缺少了dll之后,使用ldd有很多时候,不能按照想象中的工作。也许ldd一定要能够加载进程才行吧?
上一篇:SHELL SED AWK 语法
下一篇:Android上HDMI介绍