ทำไมการคอมไพล์จึงดีกว่าการติดตั้งจากที่เก็บ

ในคู่มือเล็ก ๆ นี้ฉันจะอธิบาย (และสอนคุณ) ว่าทำไมคุณถึงรวบรวมโปรแกรม (เช่น Firefox, Vlc ฯลฯ ) จากซอร์สโค้ดได้ดีกว่าดาวน์โหลด (จาก The Software Center, Yumex, Pacman และอื่น ๆ ) และติดตั้ง

ก่อนอื่นเราไปกับทฤษฎี:

"คอมไพล์" คืออะไร?

การคอมไพล์กำลังเปลี่ยนรหัสต้นฉบับ (รหัสที่เขียนด้วยภาษาโปรแกรมบางอย่างเช่น C, C ++ เป็นต้น) เป็นโปรแกรมปฏิบัติการสำหรับการทำงานโดยใช้โปรเซสเซอร์เพื่อแปลงภาษาที่ใช้ในการสร้างรหัสเป็นไบนารีและ ผู้ประกอบ มักเรียกว่าบรรจุภัณฑ์

ทำไมถึงดีกว่า "รวบรวม"?

ก่อนอื่นคุณต้องรู้สิ่งต่อไปนี้เพื่อทำความเข้าใจว่าทำไม ใช้วิธีที่ "หยาบ" (เรียบง่ายไม่ใช่มืออาชีพมาก ฯลฯ ) แต่ละเผ่าพันธุ์ (Pentium, Core, Atom ฯลฯ ) และสายพันธุ์ของโปรเซสเซอร์ (Intel, AMD, ARM ฯลฯ ) มีคำแนะนำ (ซอฟต์แวร์ที่เขียนในแอสเซมเบลอร์ ที่ประมวลผลโค้ด) ของโมเดล (Core i7, Core i5, Atom x2, Phantom x8, Arm ฯลฯ ) และยังมีคำแนะนำทั่วไปที่ทุกประเภทมี

เมื่อคุณดาวน์โหลดโปรแกรมจากแหล่งเก็บซอฟต์แวร์ผ่านทางศูนย์ซอฟต์แวร์ (เช่น apt-get/Yumex/Yum/Pacman/ฯลฯ) โปรแกรมจะถูกติดตั้งโดยอัตโนมัติและระบุว่าได้รับการคอมไพล์ล่วงหน้าเพื่อให้ทำงานได้บนโปรเซสเซอร์ทุกรุ่นที่เป็นไปได้ (Intel และ AMD) เนื่องจากเป็นโปรแกรมที่ได้รับการคอมไพล์ล่วงหน้าแล้ว จึงสูญเสียคำสั่งเฉพาะสำหรับโปรเซสเซอร์รุ่นนั้นๆ (ลองนึกภาพว่าถ้าโปรแกรมอย่าง Firefox หรือ Chrome ซึ่งมีโค้ดมากกว่า 7 หรือ 8 ล้านบรรทัด ต้องรวมคำสั่งเฉพาะสำหรับโปรเซสเซอร์ทุกรุ่นในตลาด โค้ดจะมีขนาดใหญ่มากจนโปรแกรมจะไม่สามารถทำงานได้อย่างมีประสิทธิภาพอีกต่อไป) โดยจะคงไว้เฉพาะคำสั่งทั่วไปของผู้สร้าง (Intel, AMD, ARM) เท่านั้น

เมื่อคุณดาวน์โหลด คลายไฟล์ และคอมไพล์ซอร์สโค้ดของโปรแกรมด้วยตนเอง โปรแกรมจะถูกคอมไพล์ด้วยคำสั่งเฉพาะของ โปรเซสเซอร์ ของคุณ ( ซึ่งไม่ได้หมายความว่ามันจะไม่ทำงานบนเครื่องที่มีโปรเซสเซอร์ต่างกัน เพียงแต่ว่ามันจะถูกปรับแต่งให้เหมาะสมกับโปรเซสเซอร์ของคุณโดยเฉพาะ)ซึ่งจะช่วยปลดปล่อยและใช้ประโยชน์จากพลังทั้งหมดที่โปรเซสเซอร์ของคุณสามารถให้ได้ ด้วยคำสั่งเฉพาะของมัน

ในรายละเอียดทางเทคนิคเพิ่มเติมคำแนะนำเฉพาะเหล่านี้เชื่อมโยงอย่างใกล้ชิดกับสิ่งที่เรียกว่าชิปเซ็ตของเมนบอร์ดของคุณซึ่งเป็นเรื่องที่น่าปวดหัวอย่างยิ่งสำหรับพวกเราที่มี Intel เมื่อเราต้องการอัปเกรดโปรเซสเซอร์และเมนบอร์ด

คุณคงประหลาดใจกับพลัง การประมวลผล ของ AMD Atom x2หรือIntel Core i3 , Core 2 Duoหรือ โปรเซสเซอร์อื่นๆ ในพีซีเครื่องเก่า ของคุณ ตอนนี้คุณคงเข้าใจแล้วว่าทำไมการคอมไพล์เคอร์เนลอันโด่งดัง (หัวใจของระบบปฏิบัติการทุกระบบ) จึงเป็นเรื่องที่พูดถึงกันมากในโลกของลินุกซ์ ลองจินตนาการดูว่าถ้าคุณสามารถคอมไพล์ระบบทั้งหมดสำหรับพีซีของคุณโดยเฉพาะ (สภาพแวดล้อมกราฟิก (GNOME, KDE ฯลฯ), เคอร์เนล, โปรแกรมที่ใช้บ่อย (Firefox, VLC, Chrome, Wine ฯลฯ)) คุณจะได้รับความเร็วและการปรับแต่งที่ยอดเยี่ยมขนาดไหน

หลักการรวบรวมนี้เพื่อให้ได้รหัสที่ปรับให้เหมาะสมโดยเฉพาะสำหรับเครื่องของคุณคือรหัสที่ใช้โดย distros เช่น Gentoo และอนุพันธ์ (ซึ่งฉันจะไม่พูดถึงในตอนนี้ฉันใช้ Fedora น้อยที่สุดกับการรวบรวม Gnome 3 เคอร์เนลและโปรแกรมอื่น ๆ ) ที่ซึ่งระบบการอัปเดตและโปรแกรมของคุณจะถูกรวบรวมอยู่เสมอ

จุดด้อยของการรวบรวม:

ฉันได้อธิบายข้อดีทั้งหมดแล้ว แต่ก็เหมือนกับทุกสิ่งในจักรวาลที่มีสิ่งหนึ่งที่ต่อต้าน

ในกรณีการรวบรวมคือ;

  • เวลาที่จำเป็นสำหรับสิ่งนี้ (Firefox ที่มี i7 4790K (โดยไม่ต้องโอเวอร์คล็อกเนื่องจากฉันมีแรงดันไฟฟ้าไม่ดี) ใช้เวลา 3 นาที Gnome Shell (แถบไม่มีอะไรอื่น) กับ Gnome-Control-Center ใช้เวลาประมาณ 2 นาทีทั้งสองถูกรวบรวมที่ เวลาเดียวกันใน Fedora แต่ในเครื่องที่มีโปรเซสเซอร์ที่มีประสิทธิภาพน้อยกว่าเวลานี้อาจยาวเกินสัดส่วน)
  • โปรเซสเซอร์ใช้พลังงาน 100% พร้อมคอร์ทั้งหมดที่สูงสุดดังนั้นการบริโภคและความร้อนจึงพุ่งสูงขึ้น (คำนึงถึงสิ่งนี้หากคุณโอเวอร์คล็อกหรือถ้าเป็นโน้ตบุ๊กโดยเฉพาะ) ดังนั้นจึงสะดวกในการเตรียมเพื่อนหรือกาแฟ สำหรับโอกาส.
  • บางทีคุณอาจไม่มีไลบรารี (เครื่องมือ) ที่ใช้โปรแกรมเพื่อไม่ให้เกิดข้อผิดพลาดในการคอมไพล์ โดยทั่วไป distros ทั้งหมดจะมีแพ็กเกจหรือชุดของมันเพื่อหลีกเลี่ยงสิ่งนี้ (เต็มไปด้วยไลบรารีต่างๆและสิ่งอื่น ๆ ที่อนุญาตให้เคอร์เนลสื่อสารตามที่ควรกับโปรเซสเซอร์ในระหว่างกระบวนการ)

ฉันจะรวบรวมได้อย่างไร?

สำหรับ Debian (Ubuntu, Mint, Elementary และอื่น ๆ ทั้งหมดเป็นอนุพันธ์ของสิ่งนี้ดังนั้นให้ทำตามนี้

ที่นี่ฉันกำลังพูดถึงการรวบรวมโปรแกรมสำหรับการใช้งานปกติไม่ใช่เคอร์เนล

ความถนัดติดตั้ง build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

ฉันใส่นโยบายเดเบียน แต่ถ้า distro ของคุณไม่ใช่ Debian และทำให้คุณมีข้อผิดพลาดว่าไม่มีแพ็คเกจดังกล่าวให้ละเว้น ฉันต้องชี้แจงว่าฉันไม่ได้ใช้ระบบเหล่านี้มาเป็นเวลานานดังนั้นหากแพ็คเกจไม่ได้อยู่ในที่เก็บอีกต่อไปไม่ต้องกังวล

สำหรับ Fedora:

sudo yum -y ติดตั้งส่วนหัวเคอร์เนล
เคอร์เนลเดเวล
sudo yum groupinstall "เครื่องมือการพัฒนา"
sudo yum groupinstall "ไลบรารีการพัฒนา"

ฉันต้องขอโทษสำหรับผู้ที่ใช้ Arch (ฉันไม่รู้จัก distro ดี) และ OpenSuse เนื่องจากฉันไม่รู้จัก distros เหล่านี้หรือแพ็คเกจที่เกี่ยวข้องเพื่อทำการคอมไพล์ที่ถูกต้อง (และฉันไม่ได้ยืนยันสิ่งที่อยู่บนเครือข่าย ดังนั้นสำหรับสองคนนั้นฉันไม่รู้ว่ามันใช้ได้ไหม)

ตอนนี้คุณมีข้อกำหนดที่จำเป็นทั้งหมดแล้วคุณจะต้องดาวน์โหลดซอร์สโค้ดของโปรแกรมที่คุณต้องการคอมไพล์ตามส่วนขยายที่คุณเปิดเครื่องรูดโดยใช้เทอร์มินัล (ไม่ต้องกังวลฉันจะทิ้งคำสั่งไว้ให้คุณ) และ เมื่อคุณไปที่โฟลเดอร์ (ด้วยเทอร์มินัลเสมอ) ให้ทำสิ่งต่อไปนี้:

หากคุณมีความเป็นไปได้ที่จะกำหนดค่าตัวเองเพื่อเลือกส่วนประกอบและอื่น ๆ :

./configure

จากนั้นคุณพิมพ์:

make

และสุดท้ายเพื่อติดตั้งโปรแกรมบน linux ของคุณ:

make install

ทั้งหมดนี้มีรูทเสมอ (su ใน Fedora, sudo su ใน Ubuntu และอนุพันธ์ (Mint, Elementary Os ฯลฯ )

คำสั่งในการคลายซิปโดยใช้เทอร์มินัล (ไฟล์ถูกคลายซิปในโฟลเดอร์ที่มีไฟล์อยู่):

ไฟล์. tar (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - แพ็ค | tar cvf file.tar / file / * Unpack | tar xvf file.tar ดูเนื้อหา | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar กับ gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - tar czvf file.tar.gz / file / Unpack และ unzip | tar xzvf file.tar.gz ดูเนื้อหา (ไม่ได้แยก) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - บีบอัด | gzip -q ไฟล์ (ไฟล์บีบอัดและเปลี่ยนชื่อเป็น "file.gz") Unzip | gzip -d file.gz (ไฟล์คลายซิปและปล่อยให้เป็น "ไฟล์" หมายเหตุ: gzip บีบอัดไฟล์เท่านั้นไม่ใช่ไดเร็กทอรี
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - บีบอัด | ไฟล์ bzip2 | bunzip2 (ไฟล์บีบอัดและเปลี่ยนชื่อเป็น "file.bz2") Unzip | bzip2 -d file.bz2 | bunzip2 file.bz2 (ไฟล์คลายซิปและปล่อยให้เป็น "ไฟล์") หมายเหตุ: bzip2 บีบอัดไฟล์เท่านั้นไม่ใช่ไดเร็กทอรี
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar กับ bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - บีบอัด | ไฟล์ tar -c | bzip2> file.tar.bz2 Unzip | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (เวอร์ชันล่าสุดของ tar) ดูเนื้อหา | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - บีบอัด | zip file.zip / mayo / ไฟล์เก็บถาวร Unzip | คลายซิป file.zip ดูเนื้อหา | แตกไฟล์ -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - บีบอัด | rar -a file.rar / may / Archives เปิดเครื่องรูด | rar -x file.rar ดูเนื้อหา | rar -v file.rar | rar -l file.rar

และนั่นคือทั้งหมด คำทักทายจากบัวโนสไอเรสอาร์เจนตินา สุขสันต์วันหยุดและปีใหม่! :).


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google