14.04.01 32- บิต: ไม่มีไฟล์ g ++ 64- บิตรวมเมื่อทำการคอมไพล์ข้าม


8

ดังนั้นฉันได้ติดตั้ง Xubuntu 14.04.1 32- บิต เรามีรหัสอินเทอร์เฟซที่เราตั้งใจจะปล่อย SOs สำหรับแพลตฟอร์มต่าง ๆ ที่เราสนับสนุนและ Windows DLLs (ใช่ฉันรู้แล้วไบนารีที่วางจำหน่ายไม่ดี แต่ก็ไม่เกี่ยวข้องกันที่นี่)

ฉันพยายามสร้าง SO 32- บิตและ 64- บิตกับ 32- บิต 14.04.01 โดยใช้-m32/ -m64gcc / g ++ ข้อโต้แย้ง รุ่น 32 บิตทำงานได้ดี แต่รุ่น 64 บิตล้มเหลวด้วย

/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory

การตรวจสอบในการรวมไฟล์นั้นมีอยู่จริงเป็น 32- บิต แต่ขาดหายไปสำหรับ 64- บิต

Googling ปัญหานี้ดูเหมือนว่าจะเกิดขึ้นในอดีตสำหรับ GCC / G ++ 4.6 แต่ถูกทำเครื่องหมายว่าได้รับการแก้ไขแล้ว แต่ 14.04.1 ใช้ GCC / G ++ 4.8 ซึ่งแสดงว่ามีการถดถอยในไลบรารีเหล่านั้นใน GCC / G ++ 4.8 นี่เป็นสิ่งที่คนอื่นเห็นหรือไม่

ฉันสามารถตั้งค่า VM ใหม่สำหรับ 64- บิต 14.04.1 ถ้าจำเป็นและดูว่าจะรับรุ่นไลบรารีที่เหมาะสมหรือไม่ ฉันไม่ควรทำถ้าเป็นไปได้เพราะฉันมีสิ่งอื่น ๆ อีกมากมายฉันต้องติดตั้งใหม่เช่นกัน มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม? และถ้าฉันติดตั้ง 64- บิต 14.04.1 ฉันจะสามารถคอมไพล์กลับไปเป็น 32- บิตโดยไม่ต้องมีส่วนหัวหายไปในทิศทางอื่นได้หรือไม่?


... บางทีคุณควรหลีกเลี่ยงการกล่าวถึงสิ่งที่ "ไม่เกี่ยวข้องที่นี่" เนื่องจากไม่เกี่ยวข้อง
mikewhething

2
คุณติดตั้งg++-multilibแพ็คเกจหรือไม่
ขับขี่เหล็ก

@steeldriver ขอบคุณ - นั่นแหล่ะ! ดูเหมือนว่าการติดตั้ง 64 บิตจะเป็นค่าเริ่มต้น แต่การติดตั้งแบบ 32 บิตจะไม่เป็นเช่นนั้น ตกลงอย่างอื่นเพื่อเพิ่มรายการตรวจสอบ "วิธีการตั้งค่า Linux build VM" ของฉัน :) อาจดูเหมือนพื้นฐาน แต่ฉันไม่เห็นว่านี่เป็นคำตอบสำหรับคำถามของคนอื่นสำหรับข้อผิดพลาดการคอมไพล์เดียวกันและฉันไม่ใช่ผู้เชี่ยวชาญ Linux จริง ๆ
เกรแฮม

คำตอบ:


9

ไฟล์ 64 บิตบิต / c ++ config.h มีให้ในระบบ 32 บิต (และในทางกลับกัน) โดยการติดตั้งg++-multilibแพ็กเกจดังนั้นคุณต้องติดตั้งแพ็กเกจนั้นโดยใช้ Software Center, Synaptic หรือผ่านเทอร์มินัลโดยใช้

sudo apt-get install g++-multilib

นี่เป็นเพียงแพ็คเกจการพึ่งพาที่แก้ไขg++-4.8-multilibเป็นค่าเริ่มต้นสำหรับรุ่น gcc / g ++ และในทางกลับกันก็ขึ้นอยู่กับlib64stdc++-4.8-dev(การคอมไพล์ 64 บิตบน 32- บิต) หรือlibx32stdc++-4.8-dev(คอมไพล์ 32- บิตบน 64- บิต) - มันเป็นสิ่งที่มี ไฟล์ส่วนหัวที่แท้จริง

gccมีชุดเทียบเท่าของแพคเกจสำหรับคอมไพเลอร์ C ธรรมดา


4
sudo apt-get install g++-5-multilibได้รุ่นที่ฉันต้องการ หากวิธีนี้ใช้ไม่ได้สำหรับคุณหมายเหตุsudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get updateยังเป็นส่วนหนึ่งของการกำหนดค่าของฉัน
U007D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.