私はmakefileの作成を含むプロジェクトを行っています。ここでは2つの異なるメイクファイルがあります。最初のものは最初のビルドステップです。 2番目のメイクファイルでは、最初に生成されたオブジェクトファイル(提供されたパス)を使用しようとしています。私がここで直面している問題は、リンカーがこの新しいオブジェクトファイルを古いオブジェクトファイルにリンクできないことです。Makefileリンカーがオブジェクトファイルの1つをリンクできません
この手順を実行するには、このコマンドを使用しています。
arm-none-eabi-g++ -T ../linker.ld -nostartfiles -Xlinker --gc-sections -Wl,-Map,"map_file.map" -specs=nano.specs -o "target.elf" new_file.o all_older_files.o
ここnew_file.oはarm_eabiバージョン0であり、all_older_files.oはしかし、これは私にエラーや警告を与えていないarm_eabiバージョン5です。興味深いのは、new_file.oのシンボルのいくつかがtarget.elfファイルに含まれているということです。私はリンカーのスクリプトをチェックしてチェックしましたが、解決策を見つけることができず、eabiのバージョンが何か変わっているかどうかを確認しますが、elfエディターを使ってelfファイルを手作業で編集すると同じです。
私が望むのは、このtarget.elfにnew_file.oのセクションを含めて、これらを利用できるようにすることです。
まず、なぜ2つのメイクファイルが必要ですか?あなたはそうではありません、神は禁じられています、もう一方のメイクファイルを再帰的に呼び出しますか? –
私は混乱しています - あなたはリンカがエラーを出さず、出力ELFを生成し、リンクされたELFには入力オブジェクトからのものが含まれていると言っています - どのように「リンクできませんか?リンカスクリプトは、スクリプトが何をしているのか、そしてオブジェクトが実際に誰が言うことができるセクションが分からないと、それ以上のものを単に破棄しているように聞こえるように聞こえます。または、おそらく「欠落している」セクションは他のものによって参照されていなかったので、あなたがそれを言ったからです。これはメイクファイルと何が関係していますか? – Notlikethat
@MarkGaleck私のプロジェクトでは、EclipseのIDEベースのCプロジェクトを使用しているので、最初のmakeファイルはEclipseからの自動生成メークファイルのようなものです。 2番目のメイクファイルはPost_Buildオプションで設定されたもので、プロジェクトで必要ないくつかの追加ファイルを生成するために使用します。私はautogenファイルを編集したり、プロジェクトの設定を変更したりしたくありませんでした。 – codelock