Pengalihan Keluar Simbol Tidak Digunakan yang Dioptimumkan dalam GCC dan ld Builds
Apabila membina boleh laku, terutamanya untuk sistem terbenam berasaskan ARM, mengoptimumkan saiz boleh laku ialah penting untuk meningkatkan prestasi. Satu isu yang ketara ialah kehadiran simbol yang tidak digunakan dalam binari, menyumbang kepada kembung perut yang tidak perlu.
Untuk mengurangkan masalah ini dalam persekitaran GCC dan ld, pendekatan dua peringkat digunakan:
Peringkat 1: Mengasingkan Bahagian Kod
Menggunakan pengkompil flags -fdata-sections dan -ffunction-sections mengarahkan pengkompil untuk membahagikan kod dalam setiap unit terjemahan kepada bahagian berbeza yang mewakili fungsi, kelas dan pembolehubah luaran. Ini membolehkan pengasingan simbol yang tidak digunakan.
Peringkat 2: Membuang Bahagian Tidak Dirujuk
Semasa fasa pemautan, memanggil pemaut dengan bendera pengoptimuman -Wl,--gc -sections mencetuskan pemaut untuk membuang bahagian yang kekurangan rujukan. Ini memastikan bahawa simbol yang tidak digunakan dikecualikan daripada boleh laku akhir.
Sebagai contoh, mempertimbangkan ujian fail.cpp dengan dua fungsi, satu daripadanya tidak digunakan, perintah berikut akan menghasilkan boleh laku yang menghilangkan fungsi yang tidak digunakan:
gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
Dengan menggabungkan pendekatan dua peringkat ini, simbol yang tidak digunakan boleh dikeluarkan dengan berkesan, dengan ketara mengurangkan saiz boleh laku akhir, dengan itu meningkatkan prestasi pemuatan dalam sistem terbenam yang dikekang sumber.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengoptimumkan Binaan GCC dan ld untuk Mengalih keluar Simbol yang Tidak Digunakan dan Mengurangkan Saiz Boleh Laksana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!