2017-04-07 80 views
0

EXCLUDE_FILEを使用して、特定のオブジェクトファイルの特定のセクションを、生成したいマスターオブジェクトファイルに配置することを明示的に省略しました。私は、セクション全体ではなく特定のシンボルを省略する方法があるかどうか疑問に思っていました。リンカスクリプトの特定のセクションから関数/シンボルを除外する方法はありますか?

例:

は、私は.textセクションと.dataのセクションで1.o、2.Oと3.Oで構成ライブラリa.libを持っていると言います。 1.oの.textセクションには、func1、func2、およびfunc3が含まれています。

EXCLUDE_FILEを使用すると、.textセクションまたは.dataセクション全体を1.oから省略することができます。私はfunc1だけを省略し、func2とfunc3を置くことができるようにしたい。これは可能ですか?

答えて

1

GCCを使用する場合、機能を別のセクションに置くことができます。リンカスクリプトを使用してセクションを移動または省略します。

int f3(void) __attribute__((section(".excl"))); 

int f3(void) { 

    ... 
} 

これらは、f3を.exclセクションにコンパイルするようにGCCに指示します。リンカスクリプトを使用すると、他の場所に配置することができます。

SECTIONS 
{ 
    .text : 
    { 
     *(.text) 
    } 
    .... 
    .excl : 
    { 
     *(.excl) 
    } 
} 
関連する問題