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

3
ฉันสามารถลิงก์ไปยังไลบรารี GPL จากแอปพลิเคชันที่ปิดได้หรือไม่
โอเคก่อนที่ทุกคนจะตะโกนเกี่ยวกับคำถามที่ซ้ำกันใช่ฉันเคยเห็นหลายคำถามเช่นนี้ที่นี่ แต่ไม่มีใครตอบคำถาม ถ้าฉันเชื่อมโยงกับไลบรารี GPL-ed โดยไม่ต้องแก้ไขไลบรารีนั้นฉันต้องปล่อยซอร์สโค้ดของฉันหรือไม่ ตามคำถามนี้คำตอบคือใช่! แต่คำตอบนี้ไม่เป็นที่น่าพอใจสำหรับฉัน คำตอบนั้นบอกว่าฉันไม่สามารถใช้รหัส GPL ในทางใดทางหนึ่งโดยไม่ต้องทำให้รหัสของฉันที่มาเปิด แต่ถ้าก่อนหน้านี้เป็นจริงแล้วนั่นจะบ่งบอกว่าไม่มีบุคคลหรือองค์กรใดสามารถปล่อยซอฟต์แวร์ที่เป็นกรรมสิทธิ์ใด ๆ บน Linux ได้ตลอดเวลา ซึ่งจะต้องมีความผิด เพียงเพราะเพื่อให้แอปพลิเคชันใด ๆ ทำสิ่งที่มีประโยชน์เปิดไฟล์เขียนไปยังคอนโซลสร้างการเชื่อมต่อ TCP แอปพลิเคชันจะต้องเชื่อมโยงlibcซึ่งเป็น GPL-ed ดังนั้นคำถามของฉันคือ: ถ้ารัฐ GPL เป็นคำตอบก่อนหน้าทั้งหมดในเว็บไซต์บอกว่ามันเป็นโปรแกรมที่เชื่อมโยงไปยังโปรแกรม GPL อื่นจะต้องเป็น GPL เองมันเป็นไปได้อย่างไรที่จะสร้าง / เผยแพร่ / ขายใบสมัครกรรมสิทธิ์ใด ๆ ที่ทำงานบน Linux? เนื่องจากตามที่ฉันอธิบายไว้ข้างต้นว่าแอปพลิเคชันจะต้องชอบรหัส GPL เพื่อให้ทำงานบน Linux ตัวอย่างที่ใช้ประโยชน์ได้มากกว่าพูดว่าฉันลิงก์ไปยังไลบรารีที่แบ่งใช้ซึ่งเป็น GPL-ed ในแอ็พพลิเคชันที่ไม่ใช่ GPL ซึ่งจะบังคับให้แอ็พพลิเคชันที่ไม่ใช่ GPL กลายเป็น GPL-ed หรือไม่? …
34 gpl  linking 

7
เหตุใดเราต้องรวม. h ขณะที่ทุกอย่างทำงานเมื่อรวมเฉพาะไฟล์. cpp
ทำไมเราต้องรวมทั้งไฟล์.hและ.cppในขณะที่เราสามารถทำให้มันทำงานได้โดยรวม.cppไฟล์ ตัวอย่างเช่นการสร้างfile.hที่มีการประกาศแล้วการสร้างคำนิยามที่มีและรวมทั้งในfile.cppmain.cpp อีกทางหนึ่ง: การสร้างการfile.cppประกาศ / คำจำกัดความที่มี (ไม่มีต้นแบบ) รวมถึงสิ่งmain.cppต่อไปนี้ ทั้งสองทำงานให้ฉัน ฉันไม่เห็นความแตกต่าง บางทีความเข้าใจในกระบวนการรวบรวมและเชื่อมโยงอาจช่วยได้บ้าง
18 c++  c  headers  linking  include 

3
ฉันควรเพิ่มแหล่งที่มาของห้องสมุดแทนที่จะเชื่อมโยงไปยังพวกเขาหรือไม่
ฉันค่อนข้างใหม่กับ C ++ ดังนั้นฉันไม่แน่ใจว่าฉันควรจัดการกับการอ้างอิงขนาดเล็กได้ดีที่สุดอย่างไร (เช่นภาษาสคริปต์หรือ JSON / YAML / XML Parser) ฉันควรสร้างโครงการแยกต่างหากและเชื่อมโยงเป็นห้องสมุดแบบคงที่หรือมีข้อเสียเพียงวางไฟล์. h / .cpp ลงในโครงการหลักของฉัน หลังดูง่ายกว่ามากเพราะฉันใช้เวลาหลายชั่วโมงในการจัดการกับไลบรารีที่เข้ากันไม่ได้ (การตั้งค่าคอมไพเลอร์ที่แตกต่างกันเมื่อสร้างห้องสมุด) แต่ฉันไม่ต้องการเริ่มต้นเรียนรู้ C ++ ในทางที่ผิด หากการเก็บไว้เป็นไลบรารี่แยกกันฉันจะเก็บแฟล็กการรวบรวมให้ตรงกันได้อย่างไรเพื่อให้ไฟล์. lib / .a เชื่อมโยงกับแอปพลิเคชันของฉันสำเร็จ (ตอนนี้ฉันทำงานกับ MSVC 2015 แต่เป้าหมายคือการคอมไพล์บน Mac OS X และ iOS โดยใช้ XCode / clang ดังนั้นฉันต้องจัดการกับไลบรารีที่แตกต่างกันอย่างน้อย 3 ประเภท (Win x86, Mac x64, ARM) )
14 c++  linking 

1
เหตุใดส่วนรหัสจึงเรียกว่าส่วนข้อความ
ส่วนของปฏิบัติการที่มีรหัสบางครั้งเรียกว่า.textส่วน ในสถาปัตยกรรมหน่วยความจำที่แบ่งกลุ่มบางส่วนที่แมปเป็นรหัสบางครั้งเรียกว่าส่วนข้อความ ข้อความแสดงข้อผิดพลาด unix“ ไฟล์ข้อความไม่ว่าง” ( ETXTBSY) หมายถึง“ ไฟล์นี้เป็นโปรแกรมที่กำลังดำเนินการ” ไม่ว่าข้อความมาหมายถึงการปฏิบัติการ (เครื่อง) รหัส ? คำตอบในอุดมคติ: อธิบายการเชื่อมต่อระหว่างคำและความหมายของคำนั้น ให้การอ้างอิงสำหรับแหล่งกำเนิดหรืออย่างน้อยประวัติศาสตร์ของคำนั้น ให้แนวคิดเกี่ยวกับชุมชนที่ใช้

2
Apollo-11: การใช้การรวมแทน linker
เมื่อเร็ว ๆ นี้ในรูปแบบดิจิตอลและกลายเป็นซื้อคืนที่เดิมพอลโล 11 คำแนะนำรหัสที่มาของคอมพิวเตอร์ได้รับการทำใช้ได้สำหรับการดูบน Github ในMAIN.agcผู้เขียน repo แสดงความคิดเห็นว่าพวกเขา แยกซอร์สโค้ดเสาหินขนาดใหญ่ออกเป็นส่วนย่อยที่เล็กกว่าและจัดการได้มากกว่านั่นคือแยกเป็นไฟล์ # # แต่ละไฟล์ อีกไม่นานผู้เขียนกล่าว อาจถูกถามอย่างสมเหตุสมผลว่าเหตุใดจึงมีการรวมแหล่งที่มาหลายหมื่นบรรทัดด้วยการรวมเข้าด้วยกันแทนที่จะรวบรวมไฟล์ต้นฉบับแยกจากกันแล้วเชื่อมโยงเข้ากับรูปแบบปฏิบัติการ คำตอบคือทีมพัฒนาดั้งเดิมไม่มีตัวเชื่อมโยง ฉันรู้ว่าตัวเชื่อมโยงคืออะไรและฉันเข้าใจประเด็นของพวกเขา - แต่ฉันไม่เคยได้ยินวลี (เท่าที่ ASM ดำเนินการ) "เข้าร่วมด้วยวิธีการรวม" สิ่งนี้หมายความว่า? เมื่อพิจารณาว่าตัวเชื่อมโยงเป็นเรื่องใหญ่ในการเขียนโปรแกรมฉันอยากรู้ว่าการทดแทนตัวเชื่อมโยงนี้ด้วย "วิธีการรวม" คืออะไรและมันทำงานอย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.