1

次のようなリンカ スクリプトを書きたいと思います。

SECTIONS {
  . = 0x0;
  .startup . : { startup.o(.text) }
  .text : { *(.text) }
  .data : { *(.data) }
  .bss : { *(.bss COMMON) }
  . = 0x4000;
  other.text : { other.o(.text) }
  other.data : { other.o(.data) }
  other.bss : { other.o(.bss) }
}

ここでの私の意図は、次の順序で行うことです。

  • .textfromのあるセクションstartup.o
  • .text.dataおよび.bssのすべての入力ファイルからのそれらのセクションを含みますother.o
  • からの.text.dataおよび.bssセクションother.o

もちろん、私が与えたスクリプトには問題があります:以前に使用さother.oれたワイルドカードに含まれている*ため、出力セクションに入れられませんother

other.os の代わりにすべての入力オブジェクト ファイル バーを手動でリストする以外*に、ここで必要なことを達成する方法はありますか?

4

3 に答える 3

2

EXCLUDE_FILE を試してみてください

次のようなもの: *(EXCLUDE_FILE ( other.o) .text .text. )

于 2016-06-04T01:30:50.623 に答える
1

部分的な解決策:*ワイルドカードは本格的なファイル ワイルドカードです。運が良ければother.o、他の入力ファイルとは別のディレクトリにある場合、これは機能します。

SECTIONS {
  . = 0x0;
  .startup . : { foo/startup.o(.text) }
  .text : { foo/*(.text) }
  .data : { foo/*(.data) }
  .bss : { foo/*(.bss COMMON) }
  . = 0x4000;
  other.text : { bar/other.o(.text) }
  other.data : { bar/other.o(.data) }
  other.bss : { bar/other.o(.bss) }
}
于 2014-01-29T00:33:31.550 に答える