คำถามติดแท็ก static-linking

18
ควรใช้ไลบรารีแบบไดนามิกและแบบคงที่เมื่อใด
เมื่อสร้างไลบรารีคลาสใน C ++ คุณสามารถเลือกระหว่างไลบรารี dynamic ( .dll, .so) และ static ( .lib, .a) อะไรคือความแตกต่างระหว่างพวกเขาและเมื่อใดที่เหมาะสมที่จะใช้

16
การเชื่อมโยงแบบคงที่เทียบกับการเชื่อมโยงแบบไดนามิก
มีเหตุผลด้านประสิทธิภาพที่น่าสนใจในการเลือกการเชื่อมโยงแบบคงที่มากกว่าการเชื่อมโยงแบบไดนามิกหรือในทางกลับกันในบางสถานการณ์? ฉันได้ยินหรืออ่านข้อความต่อไปนี้ แต่ฉันไม่รู้เรื่องเพียงพอที่จะรับรองความจริง 1) ความแตกต่างของประสิทธิภาพรันไทม์ระหว่างการลิงก์แบบสแตติกและการลิงก์แบบไดนามิกนั้นมักจะเล็กน้อย 2) (1) ไม่เป็นความจริงหากใช้คอมไพเลอร์การทำโปรไฟล์ที่ใช้ข้อมูลโปรไฟล์เพื่อออพติคอลฮอตพา ธ ของโปรแกรมเนื่องจากการเชื่อมโยงแบบสแตติกคอมไพเลอร์สามารถปรับทั้งโค้ดของคุณและรหัสไลบรารี ด้วยการเชื่อมโยงแบบไดนามิกรหัสของคุณเท่านั้นที่สามารถเพิ่มประสิทธิภาพ หากใช้เวลาส่วนใหญ่ในการเรียกใช้รหัสห้องสมุดอาจทำให้เกิดความแตกต่างอย่างมาก มิฉะนั้น (1) ยังคงใช้

5
'ลิงก์แบบสแตติก' และ 'ลิงก์แบบไดนามิก' หมายถึงอะไร
ผมมักจะได้ยินคำว่า 'เชื่อมโยงแบบคง' และ 'เชื่อมโยงแบบไดนามิก' มักจะอยู่ในการอ้างอิงถึงรหัสที่เขียนในC , C ++หรือC # พวกเขาคืออะไรพวกเขากำลังพูดถึงอะไรกันแน่และพวกเขากำลังเชื่อมโยงอะไรกัน?

4
กำหนดวิธีการคงที่ในไฟล์ต้นฉบับด้วยการประกาศในส่วนหัวของไฟล์ใน C ++
ฉันมีปัญหาเล็กน้อยในการทำงานกับวิธีการคงที่ใน C ++ ตัวอย่าง. h: class IC_Utility { public: IC_Utility(); ~IC_Utility(); std::string CP_PStringToString( const unsigned char *outString ); void CP_StringToPString( std::string& inString, unsigned char *outString, short inMaxLength ); static void CP_StringToPString( std::string& inString, unsigned char *outString); void CP_StringToPString( FxString& inString, FxUChar *outString); }; ตัวอย่าง. cpp: static void IC_Utility::CP_StringToPString(std::string& inString, unsigned …

2
โปรแกรม Small Haskell ที่คอมไพล์ด้วย GHC เป็นไบนารีขนาดใหญ่
แม้แต่โปรแกรม Haskell ขนาดเล็กเล็กน้อยก็กลายเป็นโปรแกรมปฏิบัติการขนาดมหึมา ฉันได้เขียนโปรแกรมขนาดเล็กที่คอมไพล์ (ด้วย GHC) เป็นไบนารีโดยมีขนาดขยาย 7 MB! อะไรทำให้แม้แต่โปรแกรม Haskell ขนาดเล็กที่คอมไพล์เป็นไบนารีขนาดใหญ่ได้ ฉันจะทำอะไรได้บ้างเพื่อลดสิ่งนี้

5
คำอธิบายของ iOS Static vs Dynamic frameworks
ฉันต้องยอมรับว่าด้วยการเปิดตัว iOS 8 ฉันสับสนเล็กน้อยเกี่ยวกับเฟรมเวิร์กแบบไดนามิกและคงที่ใน iOS ฉันกำลังหาวิธีแจกจ่ายไลบรารีที่ฉันสร้างขึ้นและฉันต้องรองรับ iOS 7 ขึ้นไป (หมายเหตุ: นี่จะเป็นเฟรมเวิร์กที่เป็นกรรมสิทธิ์ฉันไม่สามารถใช้ฝักโกโก้และฉันไม่สามารถแจกจ่ายแหล่งที่มาได้) นี่คือสิ่งที่ฉันรู้อยู่แล้ว: iOS 8 เปิดตัว "เฟรมเวิร์กแบบฝัง" สำหรับ iOS แต่ตามที่ฉันเข้าใจพวกเขาไม่สามารถใช้งานได้กับ iOS 7 เฉพาะสำหรับ iOS 8 ขึ้นไป ฉันมีตัวเลือกในการกระจายไลบรารีของฉันเป็นไลบรารีแบบคงที่ (ไฟล์. a) และยังแจกจ่ายส่วนหัวด้วย ฉันรู้ว่านี่เป็นวิธีการทั่วไปในการจัดการกับสถานการณ์ แต่ฉันต้องการหาสิ่งที่ง่ายกว่านั้น (และรวมทรัพยากรบางอย่างไว้ด้วยถ้าเป็นไปได้) ฉันยังพบว่า iOS 7 ไม่รองรับไลบรารี. เฟรมแบบไดนามิก (เฉพาะแบบคงที่) เนื่องจากไม่รองรับการลิงก์แบบไดนามิก แต่ iOS 8 ทำได้เช่นเดียวกับการลิงก์แบบคงที่ และนี่คือคำถามของฉันเกี่ยวกับข้อมูลนี้: ฉันเห็นว่าฉันสามารถสร้างเป้าหมาย. เฟรมและทำให้มันคงที่ได้โดยเปลี่ยนประเภท Mach-O เป็น "ไลบรารีแบบคงที่นั่นจะเพียงพอหรือไม่ที่จะรองรับ iOS …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.