1

これは私の会社のためなので、具体的になりすぎるのは怖いですが、試してみます。

既存の ANSI C コードのサポートをプラットフォームに追加しようとしています。GCC 4.7.2 と GNU リンカを使用しています。newlib の一部を使用しますが、他の C ライブラリ、具体的にはlibc.a. これの最終目標は、マイクロの RAM に入れる EXE または ELF イメージ (これは PowerPC アーキテクチャ マイクロ用です) を取得することです。これは Windows XP で行われています。ビルド環境やツールチェーンではなく、単にバッチ ファイルを使用しています。

私のビルド エラーの 1 つは、malloc/free 関数の複数定義の問題です。malloc.ocmd ウィンドウは、 と の両方にこれらの定義があるというエラーを吐き出しますmallocr.o。これらは両方とも 内にありますlibc.a。「r」mallocr.oは再入可能であると言われました。また、私たちのプラットフォームは再入可能性をサポートしていないと言われました。

mallocr.o内からの のリンクを防止することで、このエラーを解決しようとしていますlibc.a。これは私が迷っている部分です。これを行う方法がわかりません。Google は役に立つ情報を何も見つけていません。また、私の問題を解決する質問をこのサイトでまだ見つけていません。これが可能かどうかはわかりません。

この質問に含める特定のコード スニペットは実際にはありません。以下は、コマンド ウィンドウからのエラーです。私は、共有したくない会社固有の事柄を *d アウトしました。

c:\***\platform\2_2_0_r2013-2_x86-32\tools\gcc_4_7_2\ppc\bin\..\powerpc-eabi\lib\libc.a(mallocr.o): In function `free':
mallocr.c:(.text+0x19c): multiple definition of `free'
c:\***\platform\2_2_0_r2013-2_x86-32\tools\gcc_4_7_2\ppc\bin\..\powerpc-eabi\lib\libc.a(malloc.o):malloc.c:(.text+0x28): first defined here
c:\***\platform\2_2_0_r2013-2_x86-32\tools\gcc_4_7_2\ppc\bin\..\powerpc-eabi\lib\libc.a(mallocr.o): In function `malloc':
mallocr.c:(.text+0x468): multiple definition of `malloc'
c:\***\platform\2_2_0_r2013-2_x86-32\tools\gcc_4_7_2\ppc\bin\..\powerpc-eabi\lib\libc.a(malloc.o):malloc.c:(.text+0x0): first defined here
4

0 に答える 0