ฉันใช้ Ubuntu 20.04 LTS และฉันเพิ่งติดตั้ง Awesome Tiling WM ฉันพบปัญหา "ข้อผิดพลาดในการค้นหาสัญลักษณ์" เมื่อติดตั้ง Rofi แม้ว่าฉันจะพบสัญลักษณ์ในไลบรารีที่กำลังค้นหาอยู่ และฉันไม่รู้ว่าต้องทำอย่างไร
นี่คือสิ่งที่ฉันทำ:
ฉันติดตั้ง Rofi ด้วย
~$ sudo apt ติดตั้ง rofi
แต่เมื่อฉันเรียกใช้ฉันจะได้รับ
~$ โรฟี่
rofi: ข้อผิดพลาดในการค้นหาสัญลักษณ์: ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: สัญลักษณ์ที่ไม่ได้กำหนด: g_task_set_name
อย่างไรก็ตามสัญลักษณ์ g_task_set_name
เป็น ในห้องสมุด ณ สถานที่นั้น:
~$ nm -D --with- symbol-version ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0 | grep g_task_set_name
คุณ g_task_set_name
(ฉันเคยเห็นที่อื่นว่าเวอร์ชันของสัญลักษณ์เหล่านี้มีความสำคัญ แต่ฉันไม่เห็นเวอร์ชันใด ๆ หลังจากสัญลักษณ์นี้ ฉันไม่รู้ว่ามันหมายความว่าอย่างไร สัญลักษณ์อื่น ๆ บางตัวในไลบรารีนั้นแสดงเวอร์ชันหลังชื่อ)
นอกจากนี้ เมื่อฉันเรียกใช้ rofi จากภายในโฟลเดอร์ที่มีไลบรารี่ ก็ไม่มีปัญหา:
~/anaconda3/envs/py37/lib$ rofi
Rofi ไม่แน่ใจว่าจะแสดงอะไร
โปรดระบุโหมดที่คุณต้องการแสดง
rofi - แสดง {โหมด}
เปิดใช้งาน modi ต่อไปนี้:
* หน้าต่าง
* วิ่ง
* ssh
สามารถเปิดใช้งานต่อไปนี้:
* ซีดีหน้าต่าง
* ดรัน
* คอมบิ
* กุญแจ
ในการเปิดใช้งานโหมด ให้เพิ่มเข้าไปในรายการของ modi ในการตั้งค่า modi
ในที่สุดฉันต้องการเพิ่ม rofi ให้กับการเชื่อมโยงคีย์ใน AwesomeWM ดังนั้นวิธีแก้ไขคือให้เรียกใช้คำสั่งจากโฟลเดอร์นี้เสมอแต่ฉันไม่รู้ว่าจะทำอย่างไร
ในขณะที่พยายามแก้ปัญหาให้ละเอียดยิ่งขึ้น ฉันรู้สึกสับสนมากขึ้น ฉันพบไลบรารี่เดียวกันในอีกสองตำแหน่ง หนึ่งสำหรับ 32 บิตและอีกหนึ่งสำหรับ 64 บิต
~$ dpkg -S libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0
สัญลักษณ์ในทั้งสองห้องสมุดเหล่านี้:
~$ nm -D --with- symbol-versions /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 | grep g_task_set_
คุณ g_task_set_return_on_cancel
คุณ g_task_set_source_tag
คุณ g_task_set_task_data
(มีเอาต์พุตเหมือนกันสำหรับไลบรารีในโฟลเดอร์ i386) แต่ rofi ยังคงทำงานจากโฟลเดอร์ 64 บิต:
/usr/lib/x86_64-linux-gnu$ rofi
Rofi ไม่แน่ใจว่าจะแสดงอะไร
โปรดระบุโหมดที่คุณต้องการแสดง
rofi - แสดง {โหมด}
...
แต่ไม่ใช่จากโฟลเดอร์ 32 บิต:
/usr/lib/i386-linux-gnu$ rofi
rofi: ข้อผิดพลาดในการค้นหาสัญลักษณ์: /home/martin/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: สัญลักษณ์ที่ไม่ได้กำหนด: g_task_set_name
ฉันต้องการความช่วยเหลือเพื่อให้ Rofi ทำงานได้ โดยควรผ่านการแก้ปัญหา แต่วิธีแก้ปัญหาก็ทำได้ดีเช่นกัน
ฉันขอขอบคุณความช่วยเหลือเพียงเพื่อทำความเข้าใจว่าเกิดอะไรขึ้น ฉันไม่เข้าใจว่า rofi ดำเนินการเกี่ยวกับการค้นหาไลบรารีและสัญลักษณ์อย่างไร เหตุใดจึงไม่พบสัญลักษณ์ในไลบรารี และเหตุใด rofi จึงทำงานเฉพาะในสองในสามโฟลเดอร์ที่มีไลบรารี ทั้งๆ ที่มีเพียงหนึ่งในสองโฟลเดอร์เท่านั้นที่มีไลบรารีที่มีสัญลักษณ์ที่ถูกต้อง
ขอบคุณล่วงหน้า