Kesalahan pemuatan pustaka Cygwin

13

Saya membangun perpustakaan spasial kemudian perpustakaan gdal dengan dukungan spasial. Juga dibangun mapserver yang bergantung pada gdal dengan sukses. Tidak ada masalah dengan penautan.

Ketika saya mencoba menjalankan utilitas gdal saya mendapatkan:

$ 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

Tapi semuanya tampak baik-baik saja:

$ 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)

Jika saya menyalin cyggdal-1.dll ke folder saat ini:

$ ogrinfo.exe
/usr/local/bin/ogrinfo.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

Jadi, apa itu '?' Perpustakaan?

$ 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)

Apa ini "???" ? Bagaimana cara mengatasi masalah ini?


sumber

Jawaban:

27

Gunakan cygcheck /usr/bin/[yourbinary](contoh /usr/bin/curl)

Ini akan memberi tahu Anda apa pun yang tidak dapat ditemukannya. (Itu akan mengatakan 'tidak dapat menemukan [some.dll]'.)

Cukup instal paket yang namanya dll.

Misalnya - Ketika saya berlari:

$ curl

Itu kembali:

/usr/bin/curl.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

Jadi saya berlari:

$ cygcheck /usr/bin/curl

Itu kembali:

cygcheck: track_down: could not find cygsasl2-2.dll

Jadi saya menginstal paket 'libsasl2'.

Ini adalah pustaka runtime yang diinstal melalui setup.exe (cygwin installer) dan curl mulai berfungsi dengan baik.

jfgrissom
sumber
Saya tidak pernah tahu tentang alat ini sampai sekarang dan itu menunjukkan penyebab masalah saya juga: "cygcheck: track_down: tidak dapat menemukan cygsasl2-2.dll". Terimakasih banyak.
Matt Setter
1

Saya menggunakan cmd untuk menjalankan utilitas dan itu menunjukkan popup dengan nama dll yang hilang.


sumber
0

Dalam kasus saya, saya ingin menginstal SSH. Itu mengeluh tentang hilang "cyggssapi-3.dll" Saya menginstal ulang Cygwin dan memastikan untuk tidak menginstal apa pun ekstra, dan untuk menginstal versi yang benar dari SSH + SSL.

Kacang Merah
sumber