2016-12-31 5 views
2

実験を行うために、OpenWRTプロジェクトのアセンブリコードを変更したい(意味のあるコードの間にNOPを挿入する)。 最初の実行でgccの-Sフラグを使ってコンパイルしてアセンブリファイル(.sファイル)を作成する必要があります。アセンブリファイルを変更するシェルスクリプトを実行し、3番目のステップでリンカを呼び出して実行可能なバイナリを作成します。ステップ2のほかに、ステップ1 & 3を適切なmakeファイルの変更/構成、すなわちコンパイル(.sファイルの作成)のための1つのメイクファイルの作成とリンクを実行するための別の方法で実現する方法がありますか?gcc/make - アセンブリとリンクを作成するためのmakeファイルを作成する

啓発のおかあさん& 新しい年が幸せです! :)

答えて

1

使用この構文:

target [target...] : [dependent ....] 
    [ command ...] 

は、例:ターゲットfoo.oのメイクを構築することを意味し

%.S: %.c 
     $(CC) -S [email protected] -c $< 
%.o: %.S 
     $(CC) -o [email protected] -c $< 

がfoo.Sを構築し、foo.Sはfoo.cのを構築するために必要があります $ @はターゲット名を意味します $ <は最初の依存関係を意味します

+2

私はコンパイラ出力asmに '.s'をお勧めします。手書きのasmソースに対してのみ '.S'を使用してください。 (OPのスクリプト駆動型の修正がCプリプロセッサを必要とするものを追加しない限り)。 –

+2

実際には.s_origのようなカスタム拡張を作成し、%.s:%.s_origという別のルールを追加してnops(スクリプトで実行できる場合)を追加するスクリプトを実行し、%.o :答えとして%.s。このようにして、makefileはすべてのステップをカバーします。 :) – Ped7g

+0

お返事ありがとうございました!しかし、パラメータ ' - @'とはどういう意味ですか( '$ @'を意味しました、マニュアルページ全体では ' - @'が見つかりません)。 – OliverJL

関連する問題