2017-08-21 2 views
0

私は現在、私の会社の非常に大きなC++プロジェクトに取り組んでいます。私の仕事は、プロジェクトの特定の部分のコードジェネレーターを構築することです。プロジェクトは、Eclipseに基づいたKinetis Design Studio 3.0.0で管理されます。ファイルの数が、私の発電機が作成したように増加、突然エラーメッセージが表示された:大きなC++をEclipseにリンクする方法

arm-none-eabi-g++: error: ./00_Hmi/FontsHandler/SEGE_UI_11B.o: No such file or directory 
make: *** [CDSB_AutoGen.elf] Error 1 

メッセージがポップアップ表示に使用コンパイラは、GNU ARM C/C++クロスコンパイラは今、私の問題がある1.12.1

ですリンカがすべてのオブジェクトファイルを最終バイナリにリンクしようとしたとき。リンカによって見つからないファイルは確かに存在します。 ビルドから一部のファイルを除外すると、エラーが表示されなくなります(明らかに、これらのファイルに依存するコードの一部と一部を修正する必要があります)。私が除外したファイルは重要ではないようです。私はすべての生成されたファイルを含めることができ、いくつかのファイルを除外することができます。私はhereを見つけました。リンカーにはコマンドラインで渡すことができるオブジェクトファイルの最大数があります。私はGCC C++ - Linkerの限界を見つけることができませんでしたが、これは問題であると信じています。コンパイラは約160個のオブジェクトファイルを作成しますが、そのすべてが最終リンクステージで使用されているかどうかはわかりません。私はmakeの専門家でもなく、Eclipseがこれらのことをどのように処理しているか専門家でもありません。しかし、私の推測が正しい場合:すべてのオブジェクトファイルを使用するようリンカーに指示する方法はありますか?

EDIT: ほとんどのファイルを含むフォルダの名前を変更しました。リンカーコマンドが短くなりましたが、現在はうまくいきます。短いファイル名を使用するか、.cppファイルのいくつかを一緒にパックする必要があります。

+1

ここにはeclipseタグが関係していますか? – user7294900

+0

私は推測します... eclipseはg ++呼び出しを管理するので。または私は間違っていますか? –

答えて

0

ビルドプロセスの最後に一緒にリンクされた一連の静的ライブラリにプロジェクト構造とチョップソースを再編成することもできます。これは、最終的なリンケージコマンドのサイズを減らすのに役立ちます。

関連する問題