2163169_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2163169_ja-JP

2163169_ja-JP

.a 静态库ファイルを固定地址に接続する方法

MPC5746R

S32 Design Studio for Power Architecture バージョン 2017.R1


我使用了一.a静态库文件,现在我想把.a库文件内関数链接固定地址,どのように现现しますか?

以下の方法で失敗しました。


メモリ
{

m2_text : org = 0x01280000+0x10、len = 768K-0x30

}

セクション
{

.lib_section :
{
libK12LM_SCR.a:*(.テキスト*)
libK12LM_SCR.a:*(.テキスト.*)
libK12LM_SCR.a:*(.rodata)
libK12LM_SCR.a:*(.rodata.*)
} > m2_text

}

Re: 如何将.a静态库文件链接到固定地址

こんにちは、

関数を固定アドレスにリンクするための一般的な推奨手順:

1. カスタム リンカー ファイル (.ld) を使用する:

デフォルトのリンカー スクリプトを変更して、特定のメモリ セクションを定義し、関数を固定アドレスに配置します。

.my_fixed_section 0x10000000 :
{
KEEP(*(.my_fixed_func))
} > m_text

2. コード内のタグ関数:

GCC 属性を使用して、カスタム セクションに関数を配置します。

void __attribute__((section(".my_fixed_func"))) my_function(void) {
// Your code
}

3. .aを確認するライブラリはセクション属性を使用して構築されます:

.a ファイルのソースを制御していない場合は、セクション属性を使用してライブラリをラップまたは再コンパイルする必要がある場合があります。

あるいは、objcopy を使用してセクションを手動で抽出し、再割り当てします。

4. プロジェクト設定でリンカーコマンドを更新します。

[プロジェクト プロパティ] > [C/C++ ビルド] > [設定] > [ツール設定] > [クロス リンカー] に移動します。

次のようなフラグを追加します:

-T your_custom_linker.ld

5. マップファイルで検証する:

ビルド後、.map ファイルを調べて、関数が意図したアドレスに配置されていることを確認します。

よろしくお願いいたします。

ピーター


タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-21-2025 05:58 PM
更新者: