Dung lượng RAM nhỏ và các thiết bị lưu trữ dài hạn trên máy tính cá nhân trong quá khứ đã áp đặt những hạn chế rất nghiêm ngặt về kích thước của các chương trình. Vấn đề này không tồn tại ngày nay. Tuy nhiên, ngay cả bây giờ, điều quan trọng là phải giảm thiểu kích thước của mô-đun exe của ứng dụng đã phát triển càng nhiều càng tốt.
Cần thiết
- - nguồn;
- - trình biên dịch, trình liên kết;
- - máy nén mô-đun PE, chẳng hạn như UPX, Themida.
Hướng dẫn
Bước 1
Xây dựng phiên bản phát hành của ứng dụng thực thi. Chọn cấu hình thích hợp trong cài đặt dự án trong IDE. Nếu không có cấu hình như vậy, hãy tạo nó dựa trên cấu hình hiện có. Sửa đổi danh sách các tùy chọn trình liên kết bằng cách xóa và thêm các chỉ thị thích hợp. Vì vậy, khi sử dụng gói phát triển từ Microsoft, bạn nên loại bỏ tùy chọn / debug. Bạn cũng có thể thêm lệnh sau vào mã nguồn: #pragma comment (linker, "/ RELEASE")
Bước 2
Định cấu hình dự án để tránh liên kết tệp thực thi với các thư viện tĩnh càng nhiều càng tốt. Sử dụng các phiên bản chia sẻ của các thư viện tương ứng. Ví dụ: bạn có thể loại trừ mã của thư viện thời gian chạy C và C ++ bằng cách thay thế tùy chọn trình liên kết / ML hoặc / MT (thư viện đơn và đa luồng tĩnh) bằng / MD (DLL CRT đa luồng).
Bước 3
Xem xét việc hợp nhất các phần khác nhau của mô-đun exe thành một. Phương pháp này sẽ không cho kết quả đáng chú ý nếu tệp đủ lớn, nhưng với kích thước mô-đun ban đầu là 20-30 kilobyte, mức tăng có thể đáng kể. Tùy chọn trình liên kết / hợp nhất cho phép bạn hợp nhất các phần. Bạn có thể đặt nó thông qua các tham số dự án: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data hoặc sử dụng chỉ thị pragma trong mã nguồn: #pragma comment (linker, "/ merge:.text =.data ") # pragma comment (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Cũng có ý nghĩa khi xác định các thuộc tính của phần kết quả: #pragma comment (linker," /section:.data, rwe ")
Bước 4
Giảm kích thước của exe bằng cách đặt giá trị nhỏ nhất của kích thước của các khối dọc theo ranh giới mà các phần được căn chỉnh. Sử dụng tùy chọn trình liên kết / filealign được chỉ định bằng cách chỉnh sửa thuộc tính dự án hoặc chỉ thị pragma: #pragma comment (linker, "/ filealign: 0x200") Phương pháp này phù hợp với các mô-đun nhỏ.
Bước 5
Cố gắng giảm kích thước của tệp exe bằng cách xây dựng nó với các tùy chọn tối ưu hóa để giảm số lượng mã máy. Thay thế các tùy chọn trình biên dịch / O2 hoặc / Od bằng / O1.
Bước 6
Thay thế sơ khai DOS tiêu chuẩn trong mô-đun exe bằng mô-đun của riêng bạn, mô-đun này sẽ có kích thước tối thiểu. Sử dụng tùy chọn trình liên kết / sơ khai: #pragma comment (linker, "/stub:mystub.exe") Ở đây mystub.exe là tên của tệp thực thi DOS sẽ được thêm vào mô-đun exe dưới dạng sơ khai.
Bước 7
Cân nhắc chỉ định điểm vào ứng dụng của riêng bạn. Điều này sẽ loại bỏ mã khởi tạo của các thư viện thời gian chạy tĩnh. Sử dụng tùy chọn trình liên kết / entry, ví dụ: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Xin chào!", "Message!", MB_OK);}
Bước 8
Áp dụng các tiện ích đóng gói như UPX, ASPack, Themida, PECompact vào tệp exe đã hoàn thành. Dữ liệu mô-đun sẽ được nén. Chúng sẽ được giải nén vào bộ nhớ sau khi khởi chạy ứng dụng. Phương pháp này cho kết quả tốt đối với các tệp exe lớn chứa một lượng lớn dữ liệu tĩnh với entropy thấp (ví dụ: DIB rasters trong phần tài nguyên).