ฉันกำลังพัฒนาไฟล์ปฏิบัติการอินเตอร์เฟสบรรทัดคำสั่งสำหรับทั้ง osx และ linux โดยใช้ c / c ++ โครงการจะเชื่อมโยงกับ opencv ฉันควรใช้ libc ++ หรือ libstdc ++?
ฉันกำลังพัฒนาไฟล์ปฏิบัติการอินเตอร์เฟสบรรทัดคำสั่งสำหรับทั้ง osx และ linux โดยใช้ c / c ++ โครงการจะเชื่อมโยงกับ opencv ฉันควรใช้ libc ++ หรือ libstdc ++?
คำตอบ:
ฉันจะใช้ไลบรารีดั้งเดิมสำหรับแต่ละระบบปฏิบัติการเช่น libstdc ++ บน GNU / Linux และ libc ++ บน MacOS X
libc ++ ยังไม่สมบูรณ์ 100% บน GNU / Linux และไม่มีข้อได้เปรียบที่แท้จริงในการใช้งานเมื่อ libstdc ++ สมบูรณ์กว่า นอกจากนี้หากคุณต้องการเชื่อมโยงไปยังไลบรารีอื่น ๆ ที่เขียนด้วย C ++ พวกเขาเกือบจะถูกสร้างขึ้นด้วย libstdc ++ ดังนั้นคุณจะต้องเชื่อมโยงด้วยเพื่อใช้
ข้อมูลเพิ่มเติมที่นี่เกี่ยวกับความสมบูรณ์ของ libc ++ บนแพลตฟอร์มต่างๆ
std::ctype_base::mask
ค่าเป็นค่า<ctype.h>
คงที่ขึ้นอยู่กับแพลตฟอร์มทั้งหมด (ตัวประมวลผลภายในของ CPU จัดเตรียมโดยคอมไพเลอร์การจัดการข้อยกเว้นทำได้โดยเลเยอร์ ABI ระดับต่ำ แต่โดยทั่วไปแล้ว IO จะทำทั้งหมดในไลบรารี C ++ และ C ไม่ใช่สิ่งที่อยู่ในระดับต่ำ)
ลีนุกซ์รุ่นใหญ่ไม่ได้ให้ LLVM libc ++ เนื่องจาก:
หากในที่สุด libc ++ กลายเป็นส่วนหนึ่งของการแจกแจงจะเป็นส่วนประกอบเสริม การเชื่อมโยงกับมันอาจต้องใช้ตัวเลือกเพิ่มเติม
เช่นเดียวกับที่โจนาธานกล่าวคุณควรใช้เครื่องมืออะไรก็ได้ที่รวมอยู่ในค่าเริ่มต้น Clang ปลอดภัยใน Linux ที่จะใช้เนื่องจากได้รับการกำหนดค่าให้เป็น GCC แทนที่ดังนั้นในแง่มุมนั้นคุณไม่ต้องกังวลกับ 2 คอมไพเลอร์ นอกจากนี้เนื่องจากคุณกำหนดเป้าหมายสองแพลตฟอร์มคุณควรพิจารณา cmake