私はspatialiteライブラリを構築し、次にspatialiteをサポートするgdalライブラリを構築しました。また、成功してgdalに依存するmapserverを構築しました。リンクに問題はありませんでした。
Gdalユーティリティを実行しようとすると、次のようになります。
$ ogrinfo.exe
/usr/local/bin/ogrinfo.exe: error while loading shared libraries: cyggdal-1.dll: cannot open shared object file: No such file or directory
しかし、すべてがうまくいくようです:
$ ldd /usr/local/bin/ogrinfo.exe
ntdll.dll => /cygdrive/c/WINDOWS/system32/ntdll.dll (0x7c900000)
kernel32.dll => /cygdrive/c/WINDOWS/system32/kernel32.dll (0x7c800000)
cyggdal-1.dll => /usr/local/bin/cyggdal-1.dll (0x710c0000)
cygcurl-4.dll => /usr/bin/cygcurl-4.dll (0x63d80000)
cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x67f00000)
cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
ADVAPI32.DLL => /cygdrive/c/WINDOWS/system32/ADVAPI32.DLL (0x77dd0000)
RPCRT4.dll => /cygdrive/c/WINDOWS/system32/RPCRT4.dll (0x77e70000)
Secur32.dll => /cygdrive/c/WINDOWS/system32/Secur32.dll (0x77fe0000)
cygcrypto-0.9.8.dll => /usr/bin/cygcrypto-0.9.8.dll (0x6ba40000)
cygidn-11.dll => /usr/bin/cygidn-11.dll (0x6c200000)
cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x674c0000)
cygintl-8.dll => /usr/bin/cygintl-8.dll (0x6f5c0000)
cygssh2-1.dll => /usr/bin/cygssh2-1.dll (0x69ec0000)
cygz.dll => /usr/bin/cygz.dll (0x692c0000)
cygssl-0.9.8.dll => /usr/bin/cygssl-0.9.8.dll (0x63400000)
cygexpat-1.dll => /usr/bin/cygexpat-1.dll (0x66ec0000)
cyggeos_c-1.dll => /usr/bin/cyggeos_c-1.dll (0x70180000)
cyggeos-3-1-1.dll => /usr/bin/cyggeos-3-1-1.dll (0x4e0000)
cygjpeg-7.dll => /usr/bin/cygjpeg-7.dll (0x66e00000)
cygpng12.dll => /usr/bin/cygpng12.dll (0x6f200000)
Cyggdal-1.dllを現在のフォルダーにコピーした場合:
$ ogrinfo.exe
/usr/local/bin/ogrinfo.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
では、「?」とは何ですか?図書館?
$ ldd cyggdal-1.dll
ntdll.dll => /cygdrive/c/WINDOWS/system32/ntdll.dll (0x7c900000)
kernel32.dll => /cygdrive/c/WINDOWS/system32/kernel32.dll (0x7c800000)
??? => ??? (0x710c0000)
??? => ??? (0x63d80000)
??? => ??? (0x67f00000)
??? => ??? (0x61000000)
??? => ??? (0x77dd0000)
??? => ??? (0x77e70000)
??? => ??? (0x77fe0000)
??? => ??? (0x6ba40000)
??? => ??? (0x6c200000)
??? => ??? (0x674c0000)
??? => ??? (0x6f5c0000)
??? => ??? (0x69ec0000)
??? => ??? (0x692c0000)
??? => ??? (0x63400000)
??? => ??? (0x66ec0000)
??? => ??? (0x70180000)
??? => ??? (0x4b0000)
??? => ??? (0x66e00000)
??? => ??? (0x6f200000)
これは何 "???" ?この問題を解決するには?
使用する cygcheck /usr/bin/[yourbinary]
(例/usr/bin/curl
)
見つからなかったものは何でも教えてくれます。 (「[some.dll]が見つかりませんでした」と表示されます。)
Dllが指定するパッケージをインストールするだけです。
例-私が走ったとき:
$ curl
それは戻った:
/usr/bin/curl.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
だから私は走った:
$ cygcheck /usr/bin/curl
それは戻った:
cygcheck: track_down: could not find cygsasl2-2.dll
そこで、「libsasl2」パッケージをインストールしました。
これは、setup.exe(cygwinインストーラー)によってインストールされたランタイムライブラリであり、curlは正常に動作し始めました。
Cmdを使用してユーティリティを実行すると、不足しているdllという名前のポップアップが表示されました。
私の場合、 SSHをインストールします。 「cyggssapi-3.dll」がないことについて不平を言っていました。Cygwinを再インストールし、余分なものをインストールしないようにし、SSHの正しいバージョンをインストールしました+ SSL。