อะไรคือสิ่งที่เทียบเท่ากับ Linux ldd
บน Windows?
อะไรคือสิ่งที่เทียบเท่ากับ Linux ldd
บน Windows?
คำตอบ:
นี่คือ Dependency Walker
dumpbin
คำสั่งจะมีประโยชน์สำหรับหลายสิ่งหลายอย่างแม้ในกรณีนี้การพึ่งพาวอล์คเกอร์น่าจะเป็นเล็ก ๆ น้อย ๆ มากขึ้นอย่างละเอียด
dumpbin /dependents some.dll
ตัวอย่างผลลัพธ์:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Team Tools \ Static Analysis Tools> dumpbin / dependents StanPolicy.dll
การถ่ายโอนไฟล์ StanPolicy.dll
ประเภทไฟล์: DLL
รูปภาพมีการอ้างอิงดังต่อไปนี้:
mscoree.dll
สรุป
2000 .reloc 2000 .rsrc 1E000 .text
หรือเครื่องมือ GNU:
i586-mingw32msvc-objdump -p *.exe | grep 'DLL Name:'
ldd
ทำ
นี่คือโปรแกรม Go ที่ทำมัน:
package main
import (
"github.com/Binject/debug/pe"
"log"
)
func main() {
f, e := pe.Open(`C:\Windows\System32\calc.exe`)
if e != nil {
log.Fatal(e)
}
a, e := f.ImportedLibraries()
if e != nil {
log.Fatal(e)
}
for _, s := range a {
println(s)
}
}
หากคุณใช้wine
และไม่ใช่ Windows จริงคุณสามารถใช้WINEDEBUG=+loaddll wine <program>
ไฟล์.
GdiplusStartup
และ GDI + ทำงานได้โดยไม่มีปัญหาใน Wine ในขณะที่ใช้ Windows ก็ไม่ได้ ฉันสังเกตเห็นข้อผิดพลาดนี้หลังจากที่ได้ทำการดีบักโปรแกรมใน Wine แล้วพยายามเรียกใช้ใน Windows ถัดไป
ตอนนี้มีldd
ใน Cygwin หากคุณมีรุ่น Cygwin cygcheck
เก่ามากที่คุณจะต้องใช้
ผมคิดว่าวิธีที่พัฒนา Windows dumpbin /dependents source.exe
จะทำเช่นนี้คือการใช้ หากคุณมีการติดตั้ง Visual Studio C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe
คุณสามารถค้นหาได้ที่นี่:
Git เวอร์ชันใหม่กว่าบน Windows มาพร้อมกับสิ่งที่เรียกว่าGit BASHซึ่งเลียนแบบคำสั่ง Unix ที่มีประโยชน์มากมายรวมถึง ldd
ปรากฏว่ารายงานเฉพาะไลบรารีที่สามารถพบได้ ดังนั้นคุณสามารถใช้สิ่งนี้เพื่อดูภาพรวมว่าไลบรารีที่ใช้อยู่นั้นอยู่ที่ใด แต่ไม่ได้หายไป
สำหรับ Windows 10 คุณสามารถใช้ Dependencies - Dependency Walker สมัยใหม่แบบโอเพนซอร์ส
สำหรับ windows 10 ด้วย visual studio 2017 ฉันไปที่แถบค้นหาของ windows แล้วพิมพ์:
"พรอมต์คำสั่งสำหรับนักพัฒนาสำหรับ VS 2017" (cmd.exe พิเศษสำหรับนักพัฒนา Visual studio)
สิ่งนี้ทำให้สามารถเข้าถึง DUMPBIN ที่ควรใช้กับแท็ก / IMPORTS ตัวอย่างเช่นในไดเร็กทอรีที่ถูกต้อง:
DUMPBIN / IMPORTS yourfile.exe (ส่วนขยายอื่น ๆ อาจใช้งานได้เช่นกัน)
สำหรับฉันนี่คือรายการ DLL และฟังก์ชันที่ใช้
หรือคุณสามารถใช้แท็ก \ ALL ที่ละเอียดกว่ามาก
ดูคำอธิบายของ Microsoft เกี่ยวกับ DUMPBIN:
https://docs.microsoft.com/en-us/cpp/build/reference/imports-dumpbin?view=vs-2019
dumpbin /imports *.dll | find /i ".dll"