ข้อผิดพลาดในการโหลดไลบรารี Cygwin


13

ฉันสร้างห้องสมุดอวกาศจากนั้นห้องสมุด 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)

"???" คืออะไร ? วิธีแก้ปัญหานี้

คำตอบ:


28

ใช้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 เริ่มทำงานได้ดี


ฉันไม่เคยรู้เกี่ยวกับเครื่องมือนี้มาก่อนและมันก็ชี้ให้เห็นสาเหตุของปัญหาของฉันเช่นกัน: "cygcheck: track_down: ไม่พบ cygsasl2-2.dll" ขอบคุณมาก.
Matt Setter

1

ฉันใช้ cmd เพื่อรันยูทิลิตีและมันแสดงป๊อปอัปพร้อมชื่อ dll ที่หายไป


0

ในกรณีของฉันฉันต้องการติดตั้ง SSH มันบ่นเกี่ยวกับการหายไป "cyggssapi-3.dll" ฉันติดตั้ง Cygwin อีกครั้งและทำให้แน่ใจว่าจะไม่ติดตั้งอะไรเพิ่มเติมและเพื่อติดตั้ง SSH + SSL รุ่นที่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.