เครื่องมือ libtree
ความสามารถ
- แปลงคำสั่ง
ldd ให้อยู่ในรูปแบบต้นไม้
- อธิบายว่า shared library ถูกค้นพบได้อย่างไร หรือทำไมจึงหาไม่พบ
เอาต์พุต
- โดยปกติจะไม่แสดง dependency มาตรฐานบางรายการ
- สามารถใช้คำสั่งต่อไปนี้เพื่อดูเอาต์พุตที่ละเอียดขึ้น:
libtree -v: แสดงไลบรารีที่ถูกละไว้โดยปริยาย
libtree -vv: แสดง dependency ของไลบรารีที่ถูกละไว้
libtree -vvv: แสดง dependency ของไลบรารีที่ค้นพบแล้ว
- ใช้แฟล็ก
--path หรือ -p เพื่อแสดงพาธแทน soname:
- ตัวอย่าง:
libtree -p $(which tar)
- ใช้แฟล็ก
--max-depth เพื่อจำกัดความลึกของการเรียกซ้ำได้
การติดตั้ง
- ไบนารีที่คอมไพล์ไว้ล่วงหน้าของเวอร์ชัน v3.1.1:
- aarch64 (linux):
c5d4fbcd4e3fb46f02c028532f60fcf1c92f7c6aad5b07a991c67550c2554862
- armv6l (linux):
16f5a7503a095bd88ebc5e21ec4ba8337c5d9712cac355bf89399c9e6beef661
- armv7l (linux):
17f493621e7cc651e2bddef207c1554a64a114e1c907dbe5b79ff0e97180b29e
- i686 (linux):
230a163c20f4a88a983d8647a9aa793317be6556e2c6a79e8a6295389e651ef5
- x86_64 (linux):
49218482f89648972ea4ef38cf986e85268efd1ce8f27fe14b23124bca009e6f
- Fedora / RHEL / CentOS:
$ dnf install epel-release (สำหรับ RHEL และดิสโทรสายเดียวกัน ให้เปิดใช้ EPEL ก่อน)
$ dnf install libtree-ldd
- Ubuntu 22.04+:
$ apt-get install libtree
- GNU Guix:
บิลด์จากซอร์ส
libtree ต้องการคอมไพเลอร์ C ที่รองรับ c99
ความเห็นจาก GN⁺
- libtree มีประโยชน์ในการทำความเข้าใจ dependency ของ shared library ในเชิงภาพ ซึ่งช่วยได้มากทั้งในการดีบักและการดูแลระบบ
- libtree ติดตั้งได้ง่ายบนลินุกซ์ดิสโทรหลายแบบ จึงเข้าถึงได้ง่าย
- สามารถบิลด์จากซอร์สได้โดยตรง จึงปรับแต่งได้ตามต้องการ
- เครื่องมือนี้มีประโยชน์อย่างยิ่งในการจัดการ dependency ของไลบรารีในโปรเจ็กต์ที่ซับซ้อน
- เครื่องมือที่มีความสามารถคล้ายกันมี
ldd และ readelf แต่ libtree แสดงผลเป็นโครงสร้างต้นไม้ จึงเข้าใจได้ตรงไปตรงมามากกว่า
1 ความคิดเห็น
ดูดีนะ!!