กำลังรวบรวมแอป 32 บิตใน 64 บิตไม่พบ -lX11


9

ฉันเรียกคำสั่งเช่น:

g++ ... -o"myapp" -lX11 ...

และได้รับ

/usr/bin/ld: cannot find -lX11

ฉันได้ติดตั้งแพคเกจต่อไปนี้เพื่อรองรับ multiarch:

ia32-libs, libc6-dev-i386 and g++-multilib

แต่จะไม่มีประโยชน์ ดูเหมือนจะไม่มี X11 ใด ๆ ดังนั้นใน / usr / lib32 จริงๆแล้วมีเพียง 52 ไลบรารีในไดเรกทอรีนั้น ฉันรู้สึกว่าคุณควรติดตั้งไลบรารีด้วยตนเอง แต่ฉันรู้สึกว่าฉันควรตรวจสอบสิ่งต่อไป

ความช่วยเหลือใด ๆ ชื่นชม


1
คุณสามารถแสดงผลลัพธ์ของคำสั่งได้ldconfig -p | grep libX11\\.หรือไม่
Martin Dirichs

คำตอบ:


5

คุณต้องการไฟล์ส่วนหัวซึ่งจัดทำโดย-devแพ็คเกจและไม่ได้อยู่ในแพ็คเกจห้องสมุด libx11-devดังนั้นลองติดตั้ง ที่ควรแก้ไขข้อผิดพลาดในการสร้างนี้โดยเฉพาะแม้ว่าคุณอาจได้รับข้อผิดพลาดที่คล้ายกันเกี่ยวกับห้องสมุดอื่น ๆ (และคุณสามารถติดตั้ง-devแพ็คเกจของพวกเขาได้)

แม้ว่าแพ็คเกจเหล่านี้จะให้ไฟล์ส่วนหัวแทนที่จะเป็นไบนารีและในบัญชีไฟล์ส่วนหัวทั่วไปสำหรับสถาปัตยกรรมที่รองรับทั้งหมดผ่านการใช้มาโครโปรเซสเซอร์ก่อน แต่-devแพ็คเกจใน Ubuntu มักจะเป็นสถาปัตยกรรมที่เฉพาะเจาะจงและเป็นกรณีสำหรับlibx11-dev(ตามที่เห็นได้ที่นี่โดยขยายการเปิดตัวและค้นหา.debแพ็คเกจที่ระบุไว้libx11-devในรีลีสนั้น) เนื่องจากระบบอูบุนตูเป็น 64 บิตและคุณกำลังรวบรวมโปรแกรม 32 บิตซึ่งจะต้องเชื่อมโยงกับรุ่น 32 บิตของห้องสมุดคุณอาจจะต้องติดตั้งรุ่น 32 libx11-devบิต หากคุณกำลังติดตั้งด้วยapt-getหรือaptitudeคุณสามารถระบุได้ว่าโดยระบุlibx11-dev:i386เป็นแพ็กเกจที่จะติดตั้ง (ตั้งแต่multarch ได้รับการสนับสนุนและใช้งานอยู่)

http://packages.ubuntu.com/เป็นแหล่งข้อมูลที่ดีสำหรับการค้นหาชื่อของ-devแพ็คเกจที่สอดคล้องกับแพ็คเกจห้องสมุด มันไม่ได้เสมอชื่อแพคเกจของห้องสมุดตามทันทีโดย-dev; บางครั้งหมายเลขรุ่นที่แสดงอยู่ในชื่อแพคเกจไลบรารีโดยเฉพาะอย่างยิ่งหลังจาก a -จะหายไปในชื่อของ-devแพ็คเกจที่เกี่ยวข้อง

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