Tại sao biên dịch tốt hơn là cài đặt từ kho

Trong hướng dẫn nhỏ này, tôi sẽ giải thích (và dạy bạn) lý do tại sao bạn nên biên dịch một chương trình (chẳng hạn như Firefox, Vlc, v.v.) từ mã nguồn của nó, hơn là tải xuống (từ The Software Center, Yumex, Pacman, v.v. ) và cài đặt.

Đầu tiên chúng ta đi với lý thuyết:

"Biên dịch" là gì?

Biên dịch là chuyển đổi mã nguồn (mã được viết bằng một ngôn ngữ lập trình nhất định, chẳng hạn như C, C ++, v.v.) thành một chương trình thực thi cho hoạt động của nó thông qua việc sử dụng bộ xử lý để chuyển đổi ngôn ngữ được sử dụng để tạo mã thành nhị phân và người lắp ráp. Nó cũng thường được gọi là bao bì.

Tại sao nó tốt hơn để "biên dịch"?

Đầu tiên bạn phải biết những điều sau để hiểu tại sao. Nói một cách «thô thiển» (đơn giản, không chuyên nghiệp lắm, v.v.), mỗi chủng tộc (Pentium, Core, Atom, v.v.) và chủng loại của nó (Intel, AMD, ARM, v.v.) của bộ xử lý đều có hướng dẫn (phần mềm được viết bằng trình hợp dịch xử lý mã) của mô hình của họ (Core i7, Core i5, Atom x2, Phantom x8, Arm, v.v.) và cũng có các hướng dẫn chung mà tất cả các loại của họ đều có.

Khi bạn tải xuống một chương trình từ kho lưu trữ thông qua Trung tâm Phần mềm (ví dụ: apt-get/Yumex/Yum/Pacman/v.v.), chương trình đó sẽ được cài đặt tự động và được biên dịch sẵn để chạy trên tất cả các bộ xử lý có thể (Intel và AMD). Vì là chương trình biên dịch sẵn, nó sẽ mất đi các lệnh dành riêng cho kiểu bộ xử lý cụ thể đó (hãy tưởng tượng nếu một chương trình như Firefox hoặc Chrome, có hơn 7 hoặc 8 triệu dòng mã, phải bao gồm tất cả các lệnh cụ thể cho mọi bộ xử lý trên thị trường; lượng mã sẽ quá lớn đến nỗi chương trình sẽ không còn hiệu quả nữa), chỉ giữ lại các lệnh chung của nhà sản xuất (Intel, AMD, ARM).

Khi bạn tải xuống, giải nén và biên dịch mã nguồn của một chương trình, nó sẽ được biên dịch với các lệnh cụ thể dành cho bộ xử lý CỦA BẠN ( điều này không có nghĩa là nó sẽ không hoạt động trên máy có bộ xử lý khác, mà chỉ là nó sẽ được tối ưu hóa đặc biệt và hoàn toàn cho bộ xử lý của bạn) , nhờ đó giải phóng và phát huy tối đa sức mạnh mà bộ xử lý của bạn có thể mang lại nhờ các lệnh cụ thể của nó.

Nói thêm về chi tiết kỹ thuật, những hướng dẫn cụ thể này liên quan chặt chẽ đến những gì được gọi là chipset của bo mạch chủ của bạn, đây là vấn đề rất đau đầu đối với những người sử dụng Intel khi muốn nâng cấp bộ xử lý và bo mạch chủ.

Bạn sẽ ngạc nhiên trước sức mạnh mà bộ xử lý AMD Atom x2 hoặc Intel Core i3 , Core 2 Duo , hay các bộ xử lý khác trên chiếc PC cũ của bạn có thể mang lại . Giờ bạn đã hiểu tại sao việc biên dịch nhân hệ điều hành (trái tim của mọi hệ điều hành) lại được bàn tán nhiều đến vậy trong thế giới Linux rồi chứ? Hãy tưởng tượng nếu bạn có thể biên dịch toàn bộ hệ thống dành riêng cho PC của mình (môi trường đồ họa (GNOME, KDE, v.v.), nhân hệ điều hành, các chương trình thường dùng (Firefox, VLC, Chrome, Wine, v.v.)) — tốc độ và khả năng tối ưu hóa mà bạn sẽ đạt được.

Nguyên tắc biên dịch này để có được mã được tối ưu hóa đặc biệt cho máy của bạn là nguyên tắc được sử dụng bởi các bản phân phối như Gentoo và các dẫn xuất (mà tôi sẽ không nói đến bây giờ, tôi sử dụng Fedora tối thiểu với việc biên dịch Gnome 3, hạt nhân và các chương trình khác) trong đó hệ thống , các bản cập nhật và chương trình của bạn luôn được biên dịch.

Nhược điểm của việc biên dịch:

Tôi đã giải thích tất cả những lợi thế, nhưng giống như mọi thứ trong vũ trụ, nó có một điểm chống lại.

Trong trường hợp biên dịch, chúng là;

  • Thời gian cần thiết cho việc này (Firefox với i7 4790K (không cần ép xung vì tôi rất kém về điện áp) mất 3 phút, Gnome Shell (thanh không có gì khác) với Gnome-Control-Center mất khoảng 2 phút, cả hai đều đang được biên dịch đồng thời trong Fedora. Nhưng trên máy có bộ xử lý kém mạnh hơn, thời gian này có thể dài không tương xứng).
  • Bộ xử lý sử dụng 100% sức mạnh của nó với tất cả các lõi của nó ở mức tối đa, do đó mức tiêu thụ và nhiệt tăng vọt (hãy tính đến điều này nếu bạn ép xung hoặc nếu nó đặc biệt là một máy tính xách tay), vì vậy sẽ thuận tiện khi bạn chuẩn bị một người bạn đời. hoặc một ly cà phê cho dịp này.
  • Có lẽ bạn đang thiếu một thư viện (công cụ) sử dụng chương trình để nó không bị lỗi trong quá trình biên dịch. Nói chung, tất cả các bản phân phối đều có các gói hoặc tập hợp chúng để tránh điều này (chúng có đầy đủ các thư viện khác nhau và những thứ khác cho phép hạt nhân giao tiếp như nó cần với bộ xử lý trong suốt quá trình).

Tôi có thể biên dịch bằng cách nào?

Đối với Debian (Ubuntu, Mint, Elementary, v.v. chúng đều là dẫn xuất của cái này, vì vậy hãy làm theo

Ở đây tôi đang nói về việc biên dịch một chương trình để sử dụng bình thường, không phải hạt nhân.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

Tôi đặt debian-policy, nhưng nếu bản phân phối của bạn không phải là Debian và nó gây ra lỗi cho bạn rằng không có gói nào như vậy tồn tại, hãy bỏ qua nó. Tôi phải làm rõ rằng tôi đã không sử dụng các hệ thống này trong một thời gian dài, vì vậy nếu một gói không còn trong kho lưu trữ, đừng tạo ra vấn đề.

Đối với Fedora:

sudo yum -y cài đặt kernel-headers
phát triển kernel
sudo yum groupinstall "Công cụ phát triển"
sudo yum groupinstall "Thư viện phát triển"

Ở đây tôi phải xin lỗi những người sử dụng Arch (tôi không biết rõ về bản phân phối) và OpenSuse, vì tôi không biết các bản phân phối này hoặc các gói tương ứng để thực hiện biên dịch chính xác (và tôi chưa chứng thực những gì có trên mạng, vì vậy Tôi không biết nếu họ làm việc cho hai).

Bây giờ bạn đã có tất cả các yêu cầu cần thiết, bạn chỉ cần tải xuống mã nguồn của chương trình bạn muốn biên dịch, theo phần mở rộng mà bạn giải nén nó bằng thiết bị đầu cuối (đừng lo lắng, tôi sẽ để lại cho bạn các lệnh) và khi bạn đi đến thư mục (luôn với terminal), bạn thực hiện tương tự như sau:

Nếu bạn có thể tự định cấu hình để chọn các thành phần và các thành phần khác:

./configure

Sau đó bạn gõ:

make

Và cuối cùng để cài đặt chương trình trên linux của bạn:

make install

Tất cả điều này luôn luôn có gốc (su trong Fedora, sudo su trong Ubuntu và các dẫn xuất của nó (Mint, Elementary Os, v.v.)

Các lệnh giải nén bằng terminal (tệp được giải nén trong thư mục chứa tệp):

.Tar tệp (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gói | tar cvf file.tar / file / * Unpack | tar xvf file.tar Xem nội dung | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar với gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Đóng gói và zip | tar czvf archive.tar.gz / archive / Giải nén và giải nén | tar xzvf file.tar.gz Xem nội dung (chưa giải nén) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nén | tệp gzip -q (Tệp nén và đổi tên thành "file.gz") Giải nén | gzip -d file.gz (Giải nén tệp và để nó là "tệp" Lưu ý: gzip chỉ nén tệp chứ không phải thư mục
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nén | tệp bzip2 | tập tin bunzip2 (Tập tin nén và đổi tên thành "file.bz2") Giải nén | bzip2 -d file.bz2 | bunzip2 file.bz2 (Giải nén tệp và để nó là "tệp") Lưu ý: bzip2 chỉ nén các tệp, không phải thư mục
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar với bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nén | tệp tar -c | bzip2> file.tar.bz2 Giải nén | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (các phiên bản gần đây của tar) Xem nội dung | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nén | zip file.zip / mayo / archives Giải nén | giải nén file.zip Xem nội dung | giải nén -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nén | rar -a file.rar / may / archives Giải nén | rar -x file.rar Xem nội dung | rar -v file.rar | rar -l file.rar

Và đó là tất cả. Lời chào từ Buenos Aires, Argentina. Chúc các kỳ nghỉ lễ và năm mới vui vẻ! :).


Thêm vào danh sách nguồn ưu tiên trên Google.