“ ไม่สามารถโหลดปลั๊กอินแพลตฟอร์ม” xcb“” ขณะเปิดแอป qt5 บน linux โดยไม่ได้ติดตั้ง qt


103

ฉันเขียนแอปพลิเคชันสำหรับ linux ซึ่งใช้ Qt5

แต่เมื่อฉันพยายามเปิดใช้งานบน linux โดยไม่ได้ติดตั้ง Qt SDK ผลลัพธ์ในคอนโซลคือ:

ไม่สามารถโหลดปลั๊กอินแพลตฟอร์ม "xcb" แพลตฟอร์มที่พร้อมใช้งาน ได้แก่ :

ฉันจะแก้ไขปัญหานี้ได้อย่างไร? ฉันอาจต้องคัดลอกไฟล์ปลั๊กอินหรือไม่? เมื่อฉันใช้ ubuntu ที่ติดตั้ง Qt5 แต่ฉันเปลี่ยนชื่อไดเร็กทอรี Qt ปัญหาเดียวกันก็เกิดขึ้น ดังนั้นจึงใช้ไฟล์บางไฟล์จากไดเรกทอรี Qt ...

อัปเดต: เมื่อฉันสร้างในโฟลเดอร์ "แพลตฟอร์ม" ของแอปด้วยไฟล์libqxcb.soแอปยังไม่เริ่มทำงาน แต่ข้อความแสดงข้อผิดพลาดเปลี่ยนไป:

ไม่สามารถโหลดปลั๊กอินแพลตฟอร์ม "xcb" แพลตฟอร์มที่พร้อมใช้งาน ได้แก่ :

xcb

เกิดขึ้นได้อย่างไร? ปลั๊กอินแพลตฟอร์มจะพร้อมใช้งานได้อย่างไร แต่ไม่สามารถโหลดได้?


1
เพื่อชี้แจงว่ามีการติดตั้งไลบรารี Qt จริงหรือไม่?
cmannett85

1
หากติดตั้งไลบรารี Qt โปรแกรมจะทำงานได้ตามปกติ หากไม่ได้ติดตั้งหรือไม่พบ qt sdk dir โปรแกรมจะไม่ทำงาน
เคลื่อนไหว

อย่าลืมคัดลอก libQt5Gui.so.5 ด้วย
edaniels

1
สำหรับผู้ที่มาที่นี่จาก Eve Online launcher: Use eveonline.sh, not eveonline- launcher มี libs ทั้งหมดที่มาพร้อมกับเวอร์ชันพิเศษ
Ondra Žižka

ปัญหาของฉันได้รับการแก้ไขโดยใช้ python 3.8 และไม่ใช่ 3.7 สำหรับใครก็ตามที่ใช้ python
JareBear

คำตอบ:


59

ใช้ ldd (man ldd) เพื่อแสดงการอ้างอิงไลบรารีที่แบ่งใช้ รันบน libqxcb.so

.../platforms$ ldd libqxcb.so

แสดงว่า xcb ขึ้นอยู่กับ libQt5DBus.so.5 นอกเหนือจาก libQt5Core.so.5 และ libQt5Gui.so.5 (และ libs ระบบอื่น ๆ อีกมากมาย) เพิ่ม libQt5DBus.so.5 ลงในคอลเลกชันของ libs ที่ใช้ร่วมกันของคุณและคุณควรพร้อมที่จะดำเนินการต่อ


1
ขอขอบคุณ! นี่คือสิ่งที่เป็นปัญหา libQt5DBus.so.5 ควรระบุไว้ในเอกสารพร้อมกับ core และ gui
dzlatkov

4
ในกรณีของฉันได้sudo apt-get install libx11-xcb1รับการแก้ไขปัญหา แต่คำแนะนำในการใช้ของคุณlddคือสิ่งที่ชี้ให้ฉันเห็นไลบรารีที่ถูกต้องเพื่อติดตั้ง ขอบคุณ!
Daniel

4
ในกรณีของฉันฉันต้องเพิ่มlibQt5XcbQpa.so.5ลงในโฟลเดอร์ lib ด้วย
elsamuko

5
หากคุณยังคงมีปัญหานี้อยู่หลังจากดำเนินการไปlddแล้วให้ลองค้นหาplugins/platformsไดเร็กทอรีภายในการติดตั้ง Qt ของคุณ พยายามคัดลอกไดเร็กทอรีทั้งหมดนี้ไปไว้ที่เดียวกับไฟล์ไบนารีหรือไลบรารีที่ใช้ร่วมกันของคุณ หากผลงานนั้นคุณอาจตั้งค่าLD_LIBRARY_PATH(hacky) หรือเป็นที่กล่าวถึงในคำตอบโดย QT_QPA_PLATFORM_PLUGIN_PATH@bossbarber,
csl

1
ในกรณีของฉันฉันไม่ได้สร้าง / usr / bin / platforms dir แก้ไขด้วย: sudo ln -sf / usr / lib / x86_64-linux-gnu / qt5 / plugins / platforms / / usr / bin /
gipsh

56

ตามที่โพสต์ไว้ก่อนหน้านี้คุณต้องแน่ใจว่าคุณได้ติดตั้งปลั๊กอินแพลตฟอร์มเมื่อคุณปรับใช้แอปพลิเคชัน ขึ้นอยู่กับว่าคุณต้องการปรับใช้สิ่งต่าง ๆ อย่างไรมีสองวิธีในการบอกแอปพลิเคชันของคุณว่าปลั๊กอินแพลตฟอร์ม (เช่นแพลตฟอร์ม / ปลั๊กอิน / libqxcb.so) อยู่ที่รันไทม์ซึ่งอาจเหมาะกับคุณ

อันดับแรกคือการเอ็กซ์พอร์ตพา ธ ไปยังไดเร็กทอรีผ่านตัวแปร QT_QPA_PLATFORM_PLUGIN_PATH

QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins ./my_qt_app

หรือ

export QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins
./my_qt_app

ตัวเลือกอื่นที่ฉันชอบคือสร้างไฟล์ qt.conf ในไดเร็กทอรีเดียวกับไฟล์ปฏิบัติการของคุณ เนื้อหาซึ่งจะเป็น:

[Paths]
Plugins=/path/to/plugins

ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ที่นี่และที่การใช้ qt.conf


1
ว้าว! ขอบคุณมาก! ไม่ทราบเกี่ยวกับ qt.conf ควรอยู่ในหน้าแรกของคำถามที่พบบ่อยเกี่ยวกับการปรับใช้

ในกรณีของฉันด้วยเหตุผลบางประการไม่รู้จักเส้นทางภายใน qt.conf (Plugins = plugins) ฉันลงเอยด้วยการจัดหาไฟล์ qt.conf ที่ว่างเปล่าซึ่งปล่อยให้พา ธ โกลบอล (ฮาร์ดโค้ด) ถูกเขียนทับด้วยค่าเริ่มต้น qt.conf ในกรณีของฉันคือ plugins-Subfolder ใน app-directory
B Piltz

1
เราสงสัยว่าทำไมLD_LIBRARY_PATHไม่ได้ผล แต่QT_QPA_PLATFORM_PLUGIN_PATHทำตามเคล็ดลับ ขอบคุณมาก
Ahmed Fasih

1
ครั้งที่ 2 หรือ 3 ฉันมาหาคำตอบนี้และช่วยได้ทุกครั้ง
kyb

27

ฉันพยายามเริ่มไบนารีของฉันโดยคอมไพล์ด้วย Qt 5.7บน Ubuntu 16.04 LTS โดยที่ Qt5.5ติดตั้งไว้ล่วงหน้า มันไม่ได้ผล

ในตอนแรกฉันตรวจสอบไบนารีเองด้วยlddตามที่แนะนำไว้ที่นี่และ "พอใจ" ทั้งหมด "ไม่พบ" การอ้างอิง จากนั้นThis application failed to start because it could not find or load the Qt platform plugin "xcb"ข้อผิดพลาดที่ฉาวโฉ่นี้ก็ถูกโยนทิ้ง

วิธีแก้ปัญหานี้ใน Linux

ประการแรกคุณควรสร้างplatformsไดเร็กทอรีที่ไบนารีของคุณอยู่เนื่องจากเป็นที่ที่ Qt ค้นหาไลบรารี XCB คัดลอกที่libqxcb.soนั่น ฉันสงสัยว่าทำไมผู้เขียนคำตอบคนอื่นไม่พูดถึงเรื่องนี้

จากนั้นคุณอาจต้องการเรียกใช้ไบนารีของคุณด้วยQT_DEBUG_PLUGINS=1ชุดตัวแปรสภาพแวดล้อมเพื่อตรวจสอบว่าการอ้างอิงlibqxcb.soใดที่ไม่ "พอใจ" (คุณอาจใช้ไฟล์lddสำหรับสิ่งนี้ตามที่แนะนำในคำตอบที่ยอมรับ)

ผลลัพธ์ของคำสั่งอาจมีลักษณะดังนี้:

me@xerus:/media/sf_Qt/Package$ LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./Binary
QFactoryLoader::QFactoryLoader() checking directory path "/media/sf_Qt/Package/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/media/sf_Qt/Package/platforms/libqxcb.so"
Found metadata in lib /media/sf_Qt/Package/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 329472
}


Got keys from plugin meta data ("xcb")
loaded library "/media/sf_Qt/Package/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/media/sf_Qt/Package/platforms/libqxcb.so" : "Cannot load library /media/sf_Qt/Package/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ./libQt5XcbQpa.so.5))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

สังเกตlibQt5DBus.so.5ไลบรารีที่ล้มเหลว คัดลอกไปยังเส้นทางไลบรารีของคุณในกรณีของฉันมันเป็นไดเร็กทอรีเดียวกับที่ไบนารีของฉันคือ (ด้วยเหตุนี้LD_LIBRARY_PATH=.) ทำซ้ำขั้นตอนนี้จนกว่าการอ้างอิงทั้งหมดจะเป็นที่พอใจ

ปล. ขอบคุณผู้เขียนคำตอบนี้สำหรับQT_DEBUG_PLUGINS=1.


1
ฉันพบว่าในขณะที่มีการอ้างอิงที่ไม่ได้ระบุบน libQt5xcbQpa.so.5 และ libQtDBus.so.5 ฉันยังคงต้องเพิ่มโฟลเดอร์แพลตฟอร์มตามที่คุณระบุ การรวมกันนั้นทำให้มันใช้งานได้
BSD

ใครช่วยชี้ฉันไปที่คำอธิบาย "For Dummies" เกี่ยวกับวิธีแก้ไขข้อผิดพลาดนี้ ฉันไม่รู้ว่าสิ่งนี้หมายถึงอะไรฉันต้องการคำแนะนำทีละขั้นตอนสำหรับวิธีแก้ปัญหานี้ใน linux
John Smith

@JohnSmith จะดีกว่าถ้าคุณบอกเราว่าอะไรที่ไม่สมเหตุสมผลกับคุณ จากนั้นเราจะพยายามอธิบายอย่างละเอียด
Neurotransmitter

12

ฉันลองใช้ส่วนหลักของแต่ละคำตอบแล้ว แต่ก็ไม่มีประโยชน์ สิ่งที่แก้ไขได้ในที่สุดสำหรับฉันคือการส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้:

LD_LIBRARY_PATH=/usr/local/lib:~/Qt/5.9.1/gcc_64/lib
QT_QPA_PLATFORM_PLUGIN_PATH=~/Qt/5.9.1/gcc_64/plugins/ 

1
นี้ทำงานให้ฉันบน Ubuntu 17.10 ( แต่มีปัญหานี้ตั้งแต่ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/16.04!) น่าเสียดายที่แก้ไข VLC ของฉันเท่านั้นไม่ใช่ Virtualbox ที่มีข้อผิดพลาดเหมือนกัน ...
Tails

ทำงานใน Ubuntu 18.04 เพื่อรับ texworks 0.6.2 และทำงาน
XavierStuvw

11

Ubuntu 16.04 64 บิต ฉันพบปัญหาโดยไม่มีเหตุผล คืนก่อนที่ฉันจะดูหนังในอินสแตนซ์ VideoLan ของฉันคืนนั้นฉันอยากดูอีกเรื่องด้วย VideoLan VLC ไม่ต้องการเรียกใช้เนื่องจากมีข้อผิดพลาดในคำถาม ฉัน google นิดหน่อยและฉันพบวิธีแก้ปัญหาที่ช่วยแก้ปัญหาของฉันได้: จากนี้ไป VLC จะรันได้เหมือน แต่ก่อน ทางออกคือ comand นี้:

sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/

ฉันอธิบายไม่ได้ว่าอะไรคือผลที่ตามมา แต่ฉันรู้ว่ามันสร้างลิงก์สัญลักษณ์ที่ขาดหายไป


2
อย่าใช้-f --forceแฟล็กจนกว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่ ซึ่งอาจทำให้เกิดปัญหาอื่น ๆ
kyb

นี่คือสิ่งที่แก้ไขได้สำหรับฉันด้วย Ubuntu 18.04 (แอปพลิเคชันที่มีปัญหาคือ Rescue Time) เพียงแค่ปล่อยแฟล็ก -f ไว้ในกรณีที่คุณมีไดเร็กทอรีอยู่แล้ว
Eloff

8

ตั้งแต่เวอร์ชัน 5 เป็นต้นมา Qt ใช้ระบบนามธรรมของแพลตฟอร์ม (QPA)เป็นนามธรรมจากแพลตฟอร์มต้นแบบ

การใช้งานสำหรับแต่ละแพลตฟอร์มมีให้โดยปลั๊กอิน สำหรับ X11 เป็นปลั๊กอิน XCB ดูข้อกำหนด Qt สำหรับ X11สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการอ้างอิง


ดังนั้นฉันต้องติดตั้งแพ็คเกจทั้งหมดจากรายการการอ้างอิง? และจะได้ผล? นอกจากนี้ฉันพบไฟล์ libqxcb.so ใน QT SDK dir แต่การวางไว้ในไดเร็กทอรี usr / lib ไม่สามารถแก้ปัญหาของฉันได้
เคลื่อนไหว

หน้าการปรับใช้แอปพลิเคชันบนแพลตฟอร์ม X11ควรมีข้อมูลทั้งหมดที่คุณต้องการ
cloose

ฉันติดตั้งแพ็คเกจทั้งหมดที่กล่าวถึงในหน้านั้น แต่ไม่ได้ช่วยอะไร ฉันพบข้อมูลว่าปลั๊กอินของแพลตฟอร์มต้องอยู่ในไดเร็กทอรีของไฟล์ปฏิบัติการในโฟลเดอร์ "แพลตฟอร์ม" ฉันใส่ปลั๊กอิน xcb ไว้ตอนนี้ข้อผิดพลาดเปลี่ยนไป: "ล้มเหลวในการโหลดปลั๊กอินแพลตฟอร์ม" xcb "แพลตฟอร์มที่ใช้ได้คือ xcb"
เคลื่อนไหว

1
@cloose ตายอีกแล้ว :(
user89

@ user89 ไม่ใช่สำหรับฉัน ปัญหาชั่วคราวอาจจะ?
cloose

7

ข้อมูลนี้อาจจะช่วยได้ ฉันใช้ Ubuntu 18.04 และเมื่อฉันพยายามติดตั้งKritaโดยใช้วิธี ppa ฉันได้รับข้อผิดพลาดนี้:

แอปพลิเคชันนี้ไม่สามารถเริ่มทำงานได้เนื่องจากไม่พบหรือโหลดปลั๊กอินแพลตฟอร์ม Qt "xcb" ใน ""

ปลั๊กอินแพลตฟอร์มที่มี ได้แก่ linuxfb, minimal, minimalegl, offscreen, wayland-egl, wayland, xcb

การติดตั้งแอปพลิเคชันใหม่อาจแก้ไขปัญหานี้ได้

ยกเลิก

ฉันลองวิธีแก้ปัญหาทั้งหมดที่พบในเธรดนี้และเว็บอื่น ๆ โดยไม่ประสบความสำเร็จ

ในที่สุดฉันพบโพสต์ที่ผู้เขียนพูดถึงว่าเป็นไปได้ที่จะเปิดใช้งานเครื่องมือดีบักของ qt5 โดยใช้คำสั่งง่ายๆนี้:

export QT_DEBUG_PLUGINS=1

หลังจากเพิ่มคำสั่งนี้ฉันเรียกใช้kritaอีกครั้งฉันได้รับข้อผิดพลาดเดียวกัน แต่คราวนี้ฉันรู้สาเหตุของข้อผิดพลาดนั้น

libxcb-xinerama.so.0: ไม่สามารถเปิดไฟล์อ็อบเจ็กต์ที่แชร์: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว

ข้อผิดพลาดนี้ป้องกันไม่ให้ "xcb" โหลดอย่างถูกต้อง ดังนั้นวิธีแก้ไขจะติดตั้ง `libxcb-xinerama.so.0" ใช่ไหมอย่างไรก็ตามเมื่อฉันรันคำสั่ง:

sudo apt install libxcb-xinerama

ติดตั้ง lib แล้ว ตอนนี้อะไร Teo? ถ้าอย่างนั้นฉันก็ใช้เคล็ดลับเก่า ๆ :) ใช่แล้ว--reinstall

sudo apt install --reinstall libxcb-xinerama

TLDR: คำสั่งสุดท้ายนี้ช่วยแก้ปัญหาของฉันได้


6

ปัญหานี้อาจมีหลายสาเหตุ ที่สำคัญคือการใช้

export QT_DEBUG_PLUGINS=1

ก่อนที่คุณจะเรียกใช้แอปพลิเคชัน Qt ของคุณ จากนั้นตรวจสอบผลลัพธ์ซึ่งจะชี้ให้คุณเห็นทิศทางของข้อผิดพลาด ในกรณีของฉันมันคือ:

Cannot load library /opt/nao/plugins/platforms/libqxcb.so: (/opt/nao/bin/../lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))

แต่จะได้รับการแก้ไขในหัวข้อที่แตกต่างกัน ดูตัวอย่างhttps://stackoverflow.com/a/50097275/2408964


: facepalm: OMG คำแนะนำเดียวกันนี้อีกครั้ง ไม่สิ่งนี้ไม่ได้ให้ข้อมูลที่เป็นประโยชน์ แต่เป็นข้อผิดพลาดเดียวกันในเวอร์ชันที่ละเอียดกว่า ไม่มีคำใบ้หรือเบาะแสสำหรับสิ่งอื่นใดให้ดู ไม่มีอะไรหายไปไม่มีอะไร "โหลดไม่ได้" ที่ฉันไม่รู้อยู่แล้ว
John Smith

3

ฉันพบปัญหาที่คล้ายกันมากกับข้อความแสดงข้อผิดพลาดเดียวกัน ขั้นแรกแก้ไขข้อบกพร่องบางอย่างโดยเปิดเครื่องพิมพ์ Qt Debug ด้วยคำสั่งบรรทัดคำสั่ง:

ส่งออก QT_DEBUG_PLUGINS = 1

และเรียกใช้แอปพลิเคชันอีกครั้ง สำหรับฉันสิ่งนี้เปิดเผยสิ่งต่อไปนี้:

"ไม่สามารถโหลดไลบรารี /home/.../miniconda3/lib/python3.7/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: ไม่สามารถเปิดไฟล์อ็อบเจ็กต์ที่แชร์: ไม่พบไฟล์หรือโฟลเดอร์ที่คุณค้นหา)"

"ไม่สามารถโหลดไลบรารี /home/.../miniconda3/lib/python3.7/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: ไม่สามารถเปิดไฟล์อ็อบเจ็กต์ที่แชร์: ไม่พบไฟล์หรือโฟลเดอร์ที่คุณค้นหา)"

อันที่จริงฉันไม่มี libxkbcommon-x11.so.0 และ libxkbcommon-x11.so.0 จากนั้นตรวจสอบสถาปัตยกรรมของคุณโดยใช้ dpkg จากบรรทัดคำสั่ง linux (สำหรับฉันคำสั่ง "arch" ให้ผลลัพธ์ที่แตกต่างและไม่เป็นประโยชน์)

dpkg --print-architecture #result สำหรับฉัน: amd64

จากนั้นฉันก็ googled "libxkbcommon-x11.so.0 ubuntu 18.04 amd64" และในทำนองเดียวกันสำหรับ libxkbcommon-x11.so.0 ซึ่งให้แพ็กเกจเหล่านั้นบน package.ubuntu.com ที่บอกฉันว่าเมื่อมองย้อนกลับไปอย่างไม่น่าแปลกใจฉันไม่มีแพ็คเกจที่เรียกว่า libxkbcommon-x11-0 และ libxkbcommon0 และการติดตั้งแพ็คเกจเหล่านั้นจะรวมไฟล์ที่จำเป็น แต่เวอร์ชัน dev จะไม่มี จากนั้นวิธีแก้ปัญหา:

อัปเดต sudo apt-get

sudo apt-get ติดตั้ง libxkbcommon0

sudo apt-get ติดตั้ง libxkbcommon-x11-0


2

ฉันประสบปัญหาเดียวกันเมื่อติดตั้ง Viber มีไลบรารี qt ที่จำเป็นทั้งหมดใน/opt/viber/plugins/. ฉันตรวจสอบการอ้างอิง/opt/viber/plugins/platforms/libqxcb.soและพบว่าไม่มีการอ้างอิง พวกเขาlibxcb-render.so.0, libxcb-image.so.0, libxcb-icccm.so.4, libxcb-xkb.so.1 ดังนั้นผมจึงได้รับการแก้ไขปัญหาของฉันโดยการติดตั้งแพคเกจที่หายไปกับห้องสมุดนี้:

apt-get install libxcb-xkb1 libxcb-icccm4 libxcb-image0 libxcb-render-util0


ฉันมีปัญหาในการเปิด Tizen Emulator สิ่งนี้ช่วยได้ ขอบคุณ.
AlexM

2

ดังนั้นฉันจึงใช้เวลาประมาณหนึ่งวันในการพยายามคิดว่าอะไรคือปัญหา ลองใช้โซลูชันที่เสนอทั้งหมด แต่ไม่มีวิธีใดที่ใช้ได้ผลเหมือนกับการติดตั้ง xcb libs หรือการเอ็กซ์พอร์ตโฟลเดอร์ปลั๊กอิน Qt วิธีแก้ปัญหาที่แนะนำให้ใช้QT_DEBUG_PLUGINS=1เพื่อแก้ไขปัญหาไม่ได้ให้ข้อมูลเชิงลึกโดยตรงกับฉันเหมือนในคำตอบ แต่ฉันได้รับบางอย่างเกี่ยวกับสัญลักษณ์ที่ยังไม่ได้รับการแก้ไขภายใน Qt5Core

นั่นทำให้ฉันมีคำใบ้: จะเกิดอะไรขึ้นถ้ามันพยายามใช้ไฟล์อื่นจากการติดตั้ง Qt ที่แตกต่างกัน? ในเครื่องของฉันฉันมีเวอร์ชันมาตรฐานติดตั้งอยู่/home/username/Qt/และงานสร้างในเครื่องภายในโครงการของฉันที่ฉันรวบรวมด้วยตัวเอง (ฉันมีชุดอุปกรณ์ที่สร้างขึ้นเองอื่น ๆ เช่นกันในสถานที่อื่น ๆ ) เมื่อใดก็ตามที่ฉันพยายามใช้ชุดอุปกรณ์ใด ๆ (ติดตั้งโดยเครื่องมือบำรุงรักษา Qt หรือสร้างขึ้นเอง) ฉันจะได้รับ "ข้อผิดพลาด xcb"

วิธีแก้ปัญหานั้นง่ายมาก: ให้เส้นทาง Qt ผ่านCMAKE_PREFIX_PATHและไม่ใช่Qt5_DIRอย่างที่ฉันทำและมันก็แก้ปัญหาได้ ตัวอย่าง:

cmake .. -DCMAKE_PREFIX_PATH=/home/username/Qt/5.11.1/gcc_64


โอ้มนุษย์โลกของลินุกซ์คืออะไรที่ทุกโซลูชันบนเว็บมีข้อผิดพลาดที่ไม่คาดคิดแทนที่จะทำงาน เคย? สามวันในการพยายามรับเดสก์ท็อปที่ใช้งานได้ในการติดตั้ง Ubuntu ไม่สำหรับผู้ที่มาจาก Google: โซลูชันนี้ไม่ได้ผลดีไปกว่าอย่างอื่นในหน้านี้ ฉันเริ่มคิดว่า Linux ใช้งานไม่ได้จริง
John Smith

1

ในกรณีของฉันฉันต้องปรับใช้แอพ Qt สองแอพในแขก Ubuntu virtualbox บรรทัดแรกคือบรรทัดคำสั่ง ("app") GUI_based ("app_GUI") อื่น ๆ

ฉันใช้ "แอป ldd" เพื่อค้นหาว่า libs ที่ต้องการคืออะไรและคัดลอกไปยังแขกของ Ubuntu ในขณะที่ "แอป" ที่ปฏิบัติการได้ในบรรทัดคำสั่งทำงานได้ แต่ปฏิบัติการที่ใช้ GUI ขัดข้องทำให้เกิดข้อผิดพลาด "Failed to load platform plugin" xcb "ฉันตรวจสอบ ldd สำหรับ libxcb.so แล้ว แต่สิ่งนี้ก็ไม่มีการอ้างอิงที่ขาดหายไป

ปัญหาดูเหมือนจะเป็นในขณะที่ฉันคัดลอกไลบรารีที่ถูกต้องทั้งหมดฉันบังเอิญได้คัดลอกไลบรารีที่มีอยู่แล้วในระบบแขกด้วย .. หมายความว่า (ก) ไม่จำเป็นต้องคัดลอกตั้งแต่แรกและ (b) แย่กว่านั้น การคัดลอกทำให้เกิดความไม่เข้ากันระหว่างไลบรารีการติดตั้ง ที่แย่ไปกว่านั้นพวกเขายังตรวจไม่พบโดย ldd เหมือนที่ฉันพูด ..

การแก้ไขปัญหา? ตรวจสอบให้แน่ใจว่าคุณได้คัดลอกไลบรารีที่แสดงโดย ldd และไม่มีไลบรารีเพิ่มเติม


และฉันจะแก้ไขปัญหาโดยใช้คำแนะนำนี้อย่างไร
John Smith

1

ในกรณีของฉันไม่มีไฟล์ส่วนหัวเป็นสาเหตุที่libxcbQt ไม่ได้สร้างขึ้น การติดตั้งตามhttps://wiki.qt.io/Building_Qt_5_from_Git#Linux.2FX11แก้ไขปัญหาได้:

yum install libxcb libxcb-devel xcb-util xcb-util-devel mesa-libGL-devel libxkbcommon-devel

1
ใช่ฉันคิดว่าฉันมีปัญหาที่คล้ายกัน แม้แต่ qt ที่คอมไพล์แล้วจากซอร์ส แต่ไม่ได้สังเกตว่า xcb-toolchain นั้นไม่มีเหตุผลในระบบของฉันดังนั้นส่วน qt-xcb จึงไม่ได้รับการติดตั้ง
shevy

1

ฉันชอบการแก้ปัญหาด้วยqt.conf.

วางไว้qt.confใกล้กับไฟล์ปฏิบัติการด้วยบรรทัดถัดไป:

[Paths]
Prefix = /path/to/qtbase

และมันใช้งานได้เหมือนมีเสน่ห์: ^)

สำหรับตัวอย่างการทำงาน:

[Paths]
Prefix = /home/user/SDKS/Qt/5.6.2/5.6/gcc_64/

เอกสารนี้อยู่ที่นี่: https://doc.qt.io/qt-5/qt-conf.html


และฉัน "วาง qt.conf ไว้ใกล้กับไฟล์ปฏิบัติการ" ได้อย่างไร?
John Smith

สร้างไฟล์ด้วยเนื้อหาที่นำเสนอ cd path/to/executable; vim qt.confวาง บันทึกและออก.
kyb

0

ฉันเชื่อมโยงสิ่ง Qt ทั้งหมดแบบคงที่กับลินุกซ์ทั่วไปของโครงการโอเพ่นซอร์สของฉัน มันทำให้ชีวิตง่ายขึ้นเล็กน้อย คุณต้องสร้างไลบรารี Qt เวอร์ชันคงที่ก่อน แน่นอนว่าสิ่งนี้ไม่สามารถใช้กับซอฟต์แวร์แบบปิดได้เนื่องจากปัญหาการออกใบอนุญาต การปรับใช้แอป Qt5 บน Linux ในขณะนี้มีปัญหาเล็กน้อยเนื่องจาก Ubuntu 12.04 เช่นไม่มีไลบรารี Qt5 ในที่เก็บแพ็กเกจ


0

ฉันมีปัญหานี้และในบางครั้งฉันก็ลบ Qt Configs ออกจากสภาพแวดล้อมของฉัน ได้แก่

rm -rf ~/.config/Qt*

จากนั้นฉันเริ่ม qtcreator และกำหนดค่าตัวเองใหม่ด้วยสถานะที่มีอยู่ของเครื่อง จำไม่ได้แล้วว่าโครงการของฉันอยู่ที่ไหน แต่นั่นหมายความว่าฉันต้องเรียกดูโครงการเหล่านี้ "เป็นครั้งแรก" อีกครั้ง

แต่ที่สำคัญกว่านั้นมันสร้างชุดพา ธ ไลบรารีที่สอดคล้องกันดังนั้นฉันจึงสามารถสร้างและเรียกใช้ไฟล์ปฏิบัติการโปรเจ็กต์ของฉันอีกครั้งโดยที่ไลบรารี xcb หรือ qxcb จะหายไป


Qtcreator ให้ข้อผิดพลาดเดียวกันกับที่ฉันพยายามแก้ไข แน่นอน. เพราะถ้าฉันพบวิธีแก้ปัญหาที่ใช้งานได้มากพอ ๆ กับปัญหา Linux บนเว็บนั่นก็ไม่ใช่ Linux ขออภัยนี่เป็นเรื่องที่น่าผิดหวังอย่างไม่น่าเชื่อหน้า SE ทั้งหมดของห่านป่าไล่ตามโดยไม่มีโซลูชันที่ใช้งานได้เพียงอย่างเดียวเพื่อให้แผงเดสก์ท็อปทำงานบนการติดตั้ง Ubuntu โดยไม่มีข้อผิดพลาด ฉันสงสัยมากว่า Linux ใช้งานได้จริงหรือไม่
John Smith

สิ่งนี้ไม่ได้ช่วยในกรณีของฉัน
ยูจีน Gr. Philippov

-4

sudo ln -sf /usr/lib/...."adapt-it"..../qt5/plugins/platforms/ / usr / bin /

มันสร้างลิงก์สัญลักษณ์ที่พลาดไป เหมาะสำหรับ QT! ดีสำหรับ VLC !!


2
อธิบายคำตอบของคุณ
Anantha Raju C

ไม่ทำงาน เพราะไม่มีอะไรทำงาน หน้านี้ไม่ถูกต้อง 100% ไม่มี "วิธีแก้ปัญหา" ที่ใช้งานได้แม้แต่ข้อเดียว
John Smith

@JohnSmith ตัดสินจากจำนวนโหวตโหวตคำตอบบางคนได้ผลกับบางคน น่าเสียดายที่ไม่มีสิ่งใดได้ผลสำหรับคุณและฉันเข้าใจความไม่พอใจของคุณ แต่ถ้าไม่ได้ผลให้ลองทำวิจัยของคุณเองและส่งคำตอบที่ได้ผลในกรณีของคุณ ฉันหมายความว่ามาเถอะคุณใช้แพลตฟอร์มมา 5 ปีแล้วและมีคำตอบเพียง 6 คำตอบเท่านั้น? ฉันขอแนะนำอย่างนอบน้อมให้ตอบแทนชุมชนแทนที่จะบ่น เรามาที่นี่เพื่อช่วยเหลือซึ่งกันและกัน
Neurotransmitter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.