0

私は問題を抱えています、

ARM GNU GCC は .bss セクションを「ゼロ」にしようとしています。スタートアップ コードが既に実行しているため、実行したくありません。このため、最終的な画像サイズは、ゼロで埋められた bss サイズによって増加します。

私はすでにNOLOADbss セクションのリンカー スクリプトで-fno-zero-initialized-in-bss、gcc の CFLAGS の一部として使用しています。

そのセクションをゼロにしないようにARM GNU GCCに指示するにはどうすればよいですか?何か不足していますか?

4

1 に答える 1

0

ARMからの直接の回答は次のとおりです。初期化されていないデータがゼロに初期化されるのを防ぐ方法

そのデータを別のセクションに配置することで、初期化されていないデータがゼロに初期化されるのを防ぐことができます。これは、#pragma arm section を使用するか、GNU コンパイラ拡張属性((section("name"))) を使用して実現できます。

#pragma arm section zidata = “non_initialized”
int i, j; // uninitialized data in non_initialized section (without the pragma, would be in .bss section by default)
#pragma arm section zidata // back to default (.bss section)
int k = 0, l = 0; // zero-initialized data in .bss section
于 2015-04-09T20:33:57.037 に答える