2017-05-19 28 views
1

コードベースを新しいビルド環境に移植しており、リンク時にこの問題が発生しています。ARMリンカエラー:ヒープが使用されましたが、ヒープ領域が定義されていません

Error: L6915E: Library reports error: Heap was used, but no heap region was defined 

ターゲットは32ビットArm Cortex R5です。 mallocを使用しないか、コードベースのどこでも自由です。過去に同様のビルド環境のポートでは、microlibを使用してこの問題を解決しました。このような運は今はありません。

編集:私はコンパイル時にmicrolibを使用するだけで問題を解決できました。私はその質問をしたときにそれを試みたと思ったが、実際には答えなかった。

+0

同じツールチェーンを持っていて、他の人のためにコンパイルできる人には、少なくとも[V]以上を提供してください。 – Yunnosch

+0

ヒープメモリの作成と初期化でリンカスクリプトにヒープセクションが定義されていない場合の 'startup.s'の可能性があります。 – Gaurav

答えて

0

fputcを再ターゲティングし、__stdoutと__stdinを再定義することで問題を解決しました。 fputc()のARM Cライブラリの実装ではmalloc()が使用されているようですが、fputcのターゲットを変更してUARTドライバを使用した後、コードにヒープアクセス関数はありませんでした。

struct __FILE { int handle; /* Add whatever you need here */}; 
FILE __stdout; 
FILE __stdin; 


int fputc(int ch, FILE *f) 
{ 
} 
関連する問題