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

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

8
ความแตกต่างระหว่างห้องสมุดแบบคงที่และที่ใช้ร่วมกัน?
อะไรคือความแตกต่างระหว่างห้องสมุดแบบคงที่และที่ใช้ร่วมกัน? ฉันใช้ Eclipse และมีโปรเจ็กต์หลายประเภทรวมถึง Static Libraries และ Shared Libraries? คนหนึ่งได้เปรียบกว่าอีกคนหนึ่งหรือเปล่า?

8
ไฟล์เป็นสากล (สามชิ้น) แต่ไม่มีข้อผิดพลาดชิ้น (n) ARMv7-s สำหรับไลบรารีแบบคงที่บน iOS แล้วจะข้ามหรือไม่
ฉันอัพเกรดรุ่นXcodeและเมื่อใช้ห้องสมุดคงที่ภายนอกฉันได้รับข้อความนี้: ld: file เป็นสากล (3 ชิ้น) แต่ไม่มีชิ้นส่วน (n) armv7s: / file / location สำหรับสถาปัตยกรรม armv7s clang: ข้อผิดพลาด: คำสั่ง linker ล้มเหลวด้วยรหัสทางออก 1 (ใช้ -v เพื่อดูการเรียกใช้) มีวิธีใดบ้างในการหลีกเลี่ยงสิ่งนี้และเพิ่มการสนับสนุนให้กับห้องสมุดหากผู้พัฒนาห้องสมุดยังไม่ได้อัปเดตห้องสมุดของพวกเขา?

1
ความแตกต่างระหว่างไฟล์ไลบรารี. so, .la และ. a คืออะไร
ฉันรู้ว่า.soไฟล์เป็นไลบรารีแบบไดนามิก (หลายเธรดสามารถแชร์ไลบรารีดังกล่าวได้ดังนั้นจึงไม่จำเป็นต้องมีมากกว่าหนึ่งสำเนาในหน่วยความจำ) แต่อะไรคือความแตกต่างระหว่าง.aและ.la? ไลบรารีสแตติกเหล่านี้ทั้งหมดหรือไม่ หาก libs แบบไดนามิกมีข้อได้เปรียบใหญ่กว่าแบบคงที่ทำไมทำไมยังคงมีห้องสมุดแบบคงที่มากมาย? ฉันต้องการทราบกลไกพื้นฐานในการโหลดไลบรารี่ (ทั้งสองชนิด) และวิธีการเรียกใช้โค้ดใน lib เมื่อมันถูกนำไปใช้ที่ไหนสักแห่ง ฉันควรศึกษาส่วนใดของเคอร์เนล และฉันควรรู้คำสั่ง / ยูทิลิตี้ที่เกี่ยวข้องกับ Linux เพื่อที่จะรู้ว่ากระบวนการทำงานอย่างไร? (ตอนนี้ฉันรู้เพียงldคำสั่งเท่านั้น) เมื่อฉันควรพยายามที่จะสร้างรหัสลง.soหรือ.a? อันไหนดีกว่า? [mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l total 96 -rw-r--r-- 1 mirror mirror 22892 Sep 2 23:25 openvpn-plugin-auth-pam.a -rwxr-xr-x 1 mirror mirror 931 Sep 2 23:25 openvpn-plugin-auth-pam.la -rwxr-xr-x 1 mirror mirror …

5
ไฟล์ DLL และ LIB - คืออะไรและเพราะเหตุใด
ฉันรู้น้อยมากเกี่ยวกับ DLL และ LIB นอกเหนือจากนั้นพวกเขามีรหัสที่จำเป็นสำหรับโปรแกรมเพื่อให้ทำงานได้อย่างถูกต้อง - ไลบรารี แต่ทำไมคอมไพเลอร์จึงสร้างมันขึ้นมา? มันจะง่ายกว่าหรือถ้าจะรวมรหัสทั้งหมดไว้ในการปฏิบัติการเดียว? และอะไรคือความแตกต่างระหว่าง DLL และ LIB?

8
วิธีดูเนื้อหาของไลบรารี Windows (* .lib)
ฉันมีไฟล์ไบนารี - ไลบรารีคงที่ของ Windows (* .lib) มีวิธีง่ายๆในการหาชื่อฟังก์ชั่นและส่วนต่อประสานจากไลบรารีนั้นหรือไม่? มีบางสิ่งที่คล้ายกันemfarและelfdumpยูทิลิตี้ (บนระบบ Linux)?

6
หมวดหมู่ Objective-C ในห้องสมุดคงที่
คุณช่วยแนะนำวิธีการเชื่อมโยงไลบรารีคงที่กับโครงการ iPhone ให้ถูกต้องได้ไหม ฉันใช้โครงการห้องสมุดแบบสแตติกที่เพิ่มเข้ากับโครงการแอปเป็นการพึ่งพาโดยตรง (เป้าหมาย -> ทั่วไป -> การพึ่งพาโดยตรง) และใช้งานได้ดีทั้งหมดยกเว้นหมวดหมู่ หมวดหมู่ที่กำหนดในไลบรารีแบบคงที่ไม่ทำงานในแอป ดังนั้นคำถามของฉันคือวิธีเพิ่มไลบรารีแบบคงที่ที่มีบางหมวดหมู่ในโครงการอื่น และโดยทั่วไปวิธีปฏิบัติที่ดีที่สุดที่จะใช้ในรหัสโครงการแอปจากโครงการอื่นคืออะไร

3
ห้องสมุด? คงที่? Dynamic? หรือกรอบงาน โครงการภายในโครงการอื่น
ฉันมีแอพ iOS ที่มีอยู่และต้องการเพิ่มโค้ดขนาดใหญ่ที่ฉันได้พัฒนาเป็นโปรเจ็กต์อื่นเพื่อให้ง่ายต่อการทดสอบ อันใหม่ที่เกี่ยวกับการบันทึกภาพไปยังบริการแชร์ต่าง ๆ เป็นต้นเนื่องจากรหัสการแชร์นั้นต้องการการทดสอบจำนวนมากและการอัพเดทในอนาคตฉันจึงสงสัยว่าวิธีที่ดีที่สุดในการรวมโค้ดอันนั้นไว้ในแอพที่ฉันมีอยู่ ฉันไม่รู้ว่าควรเป็นห้องสมุดแบบคงที่, ห้องสมุดแบบไดนามิกหรือกรอบงานและตรงไปตรงมาฉันไม่แน่ใจจริงๆว่าสิ่งที่แตกต่างคืออะไรหรือฉันควรทำอย่างไรกับมันและตั้งค่าใน Xcode ทั้งหมดที่ฉันรู้คือฉันต้องการ / ต้องการแยกการทดสอบและอัปเดตแอปสำหรับรหัสการแชร์แยกต่างหากและให้แอปหลักใช้งานได้

3
จะรวบรวมไลบรารีแบบคงที่ใน Linux ได้อย่างไร?
ฉันมีคำถาม: วิธีการรวบรวมไลบรารีแบบคงที่ใน Linux ด้วยgccคือฉันต้องคอมไพล์ซอร์สโค้ดของฉันลงในไฟล์ชื่อ out.a. การคอมไพล์ด้วยคำสั่งนั้นเพียงพอgcc -o out.a out.cหรือไม่? ฉันไม่ค่อยคุ้นเคยgccหวังว่าใครจะช่วยฉันได้
141 c  gcc  static-libraries 

2
ความแตกต่างระหว่าง Framework และไลบรารีแบบคงที่ใน xcode4 และวิธีการเรียกใช้
ฉันค่อนข้างใหม่กับ xcode และ objective-c ฉันต้องการถามคำถามพื้นฐาน ฉันเห็นว่าเมื่อ "เชื่อมโยงไบนารีกับไลบรารี" ในการตั้งค่าโครงการมีความแตกต่างเกี่ยวกับกรอบงานและไลบรารีซึ่งนำเข้าจากโครงการอื่นในพื้นที่ทำงาน คำถามแรกทำไมต้องมีกรอบ? แล้วทำไมต้องมีห้องสมุด? ห้องสมุดของฉันไม่สามารถเป็นกรอบงานได้หรือไม่? แล้วจากไฟล์. hฉันจะเรียกคลาสจากไลบรารีสแตติกที่นำเข้าได้อย่างไร ฉันคิดว่าต้องมีคำนำหน้า แต่ฉันหาไม่เจอ "ProjName / Myclass.h" ไม่ทำงาน โปรดระบุให้ชัดเจนที่สุดเท่าที่จะทำได้ ขอบคุณ

2
การบอก gcc โดยตรงเพื่อเชื่อมโยงไลบรารีแบบคงที่
รู้สึกแปลกสำหรับฉันที่จะใช้-Wl,-Bstaticเพื่อบอกว่าgccฉันต้องการเชื่อมโยงกับไลบรารีใดแบบคงที่ ท้ายที่สุดฉันบอกgccข้อมูลอื่น ๆ โดยตรงเกี่ยวกับการเชื่อมโยงกับไลบรารี ( -Ldir, -llibname) เป็นไปได้หรือไม่ที่จะบอกไดรเวอร์ gcc โดยตรงว่าควรเชื่อมโยงไลบรารีใดแบบคงที่ คำชี้แจง:ฉันรู้ว่าหากห้องสมุดบางแห่งมีอยู่ในเวอร์ชันคงที่เท่านั้นมันจะใช้โดยไม่มี-Wl,-Bstaticแต่ฉันต้องการบอกเป็นนัยว่าgccชอบไลบรารีแบบคงที่ ฉันรู้ด้วยว่าการระบุไฟล์ไลบรารีโดยตรงจะเชื่อมโยงกับมัน แต่ฉันชอบที่จะให้ความหมายรวมถึงไลบรารีแบบคงที่และไดนามิกเหมือนกัน

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 …

5
ทำไมเราถึงใช้ use_frameworks! ใน CocoaPods?
ฉันใช้use_frameworks!ใน CocoaPods Podfileหลายครั้ง ฉันแค่สงสัยว่าทำไมเราถึงใช้มัน? ฉันไม่สามารถรับคำตอบที่ตรงไปตรงมาได้ ตัวอย่าง: platform :ios, '8.0' use_frameworks! target "CityWhether" do pod 'Alamofire' pod 'SwiftyJSON' end

8
การลิงก์แบบคงที่เฉพาะบางไลบรารี
ฉันจะลิงก์เฉพาะไลบรารีเฉพาะบางส่วนกับไบนารีของฉันได้อย่างไรเมื่อเชื่อมโยงกับ GCC gcc ... -static ...พยายามเชื่อมโยงไลบรารีที่เชื่อมโยงทั้งหมดแบบคงที่แต่ฉันไม่มีเวอร์ชันคงที่ของบางไลบรารี (เช่น libX11)

3
ฉันจะบอกให้ CMake เชื่อมโยงในไลบรารีแบบคงที่ในไดเร็กทอรีต้นทางได้อย่างไร
ฉันมีโปรเจ็กต์เล็ก ๆ ที่มี Makefile ซึ่งฉันพยายามจะแปลงเป็น CMake ส่วนใหญ่เพียงเพื่อรับประสบการณ์กับ CMake สำหรับวัตถุประสงค์ของตัวอย่างนี้โครงการมีไฟล์ต้นฉบับ (C ++ แม้ว่าฉันไม่คิดว่าภาษามีความเกี่ยวข้องเป็นพิเศษ) และไฟล์ไลบรารีแบบคงที่ซึ่งฉันได้คัดลอกมาจากที่อื่น สมมติเพื่อประโยชน์ในการโต้แย้งว่าซอร์สโค้ดไปยังไลบรารีไม่พร้อมใช้งาน ฉันมีเพียงไฟล์. a และส่วนหัวที่เกี่ยวข้อง Makefile ทำด้วยมือของฉันมีกฎการสร้างนี้: main: main.o libbingitup.a g++ -o main main.o libbingitup.a ซึ่งใช้งานได้ดี ฉันจะบอกให้ CMake สร้างสิ่งนี้ได้อย่างไร ไม่ใช่ makefile ที่แน่นอน แต่เป็นสิ่งที่มีคำสั่งเชื่อมโยงที่เทียบเท่า ฉันได้ลองวิธีที่ชัดเจน แต่ไร้เดียงสาเช่น add_executable(main main.cpp libbingitup.a) หรือ add_executable(main main.cpp) target_link_libraries(main libbingitup.a) ตลอดจนสิ่งต่างๆที่มีlink_directories(.)หรือadd_library(bingitup STATIC IMPORTED)อื่น ๆ แต่ยังไม่มีอะไรที่ส่งผลให้การเชื่อมโยงประสบความสำเร็จ …

5
การเชื่อมโยง libstdc ++ แบบคงที่: gotchas ใด ๆ ?
ฉันต้องการปรับใช้แอปพลิเคชัน C ++ ที่สร้างขึ้นบน Ubuntu 12.10 พร้อม libstdc ++ ของ GCC 4.7 กับระบบที่ใช้ Ubuntu 10.04 ซึ่งมาพร้อมกับ libstdc ++ เวอร์ชันเก่ากว่ามาก ขณะนี้ผมกำลังรวบรวมกับ-static-libstdc++ -static-libgccที่แนะนำโดยการโพสต์บล็อกนี้: การเชื่อมโยง libstdc ++ แบบคงที่ ผู้เขียนเตือนไม่ให้ใช้โค้ด C ++ ที่โหลดแบบไดนามิกเมื่อคอมไพล์ libstdc ++ แบบคงที่ซึ่งเป็นสิ่งที่ฉันยังไม่ได้ตรวจสอบ ถึงกระนั้นทุกอย่างดูเหมือนจะราบรื่นจนถึงตอนนี้: ฉันสามารถใช้ประโยชน์จากคุณสมบัติ C ++ 11 บน Ubuntu 10.04 ซึ่งเป็นสิ่งที่ฉันเป็นหลังจากนั้น ฉันทราบว่าบทความนี้มาจากปี 2548 และอาจมีการเปลี่ยนแปลงมากมายตั้งแต่นั้นมา คำแนะนำยังคงเป็นปัจจุบันหรือไม่? มีปัญหาที่น่าสงสัยที่ฉันควรระวังหรือไม่?

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