0

これを検索しましたが、見つけた質問はツールチェーンを機能させることに関するものです。私の問題は、いくつかのディレクトリを除くすべてで機能することです。また、私は Linux を構築していません。

人々を幸せにするために、プロジェクトを Linux マシンから Windows に移行しようとしています。Linux (Ubuntu 12.04) では、同じツールチェーンの Linux Binary を使用して、同じプロジェクトを正常にビルドできます (念のため、Mentor の同じディレクトリから両方のツールチェーンを最近リロードしました。以下の詳細を参照してください)。

Cygwin をインストールし、パッケージを取得し、パスを設定しました。一般に、ビルドはプロジェクトの 90% で機能しますが、make がディレクトリを走査すると、2 つのファイルを除くすべてが検出されます (明確にするために、これら 2 つは最初のファイルです)。それぞれのディレクトリにあるので、問題はディレクトリ全体に当てはまると思います)。以下のログは、最初の失敗を示しています。

  • ビルドから lwip を削除すると、次のビルドで爆発します
  • ビルドから次のものを取り出すと、他のすべてが (かなり) コンパイルされます。次に、リンカは、2 つの不足している項目で期待どおりに失敗します。

より正確には、例えば

/home/Nadi/project/version-2.9/external/freertos/Source/portable/GCC/ARM_CM3_MPU/port.c を見つけます

/home/Nadi/project/version-2.9/external/lwip/src/api/api_lib.c ではありません

私がmakeを実行しているディレクトリから、「ls」はコンパイラが見つけられないファイルを見つけます。

ログ:

$ make
external/freertos 
external/lwip  
 [cc] Debug/api_lib.o 
arm-none-eabi-gcc.exe: error: /home/Nadi/project/version-2.9/external/lwip/src/api/api_lib.c: No such file or directory 
arm-none-eabi-gcc.exe: fatal error: no input files compilation terminated. 
Makefile:189: recipe for target `Debug/api_lib.o' failed 
make[2]: *** [Debug/api_lib.o] Error 1 
Makefile:37: recipe for target `lwip_world' failed 
make[1]: *** [lwip_world] Error 2 
Makefile:160: recipe for target `extern' failed 
make: *** [extern] Error 2

詳細:

  • GCC チェーン : arm-none-eabi-gcc ; gcc バージョン 4.7.2 (Sourcery CodeBench Lite 2012.09-63)
  • Cygwin : CYGWIN_NT-6.1-WOW64
4

2 に答える 2

1

この特定のケースでは役に立たないかもしれませんが、CodeSourceryのgccがCygwinのパスをまったく認識しないという同様の問題に直面し/cygdrive/d/foo.cました-cygpathパッケージのインストールと環境変数の設定export CYGPATH=c:/cygwin32/bin/cygpath(またはset CYGPATH=c:/cygwin32/bin/cygpathWindowsコンソールで)がすべての問題を解決しました。

使用する Cygwin または Windows コンソールに関係なく、上記とまったく同じ方法で cygpath 実行可能ファイルへのパスを定義してください。

于 2015-03-26T16:37:05.513 に答える
0

私の以前のコメントの詳細は、Sourceryベースのクロス コンパイラで windows/cygwin の組み合わせを使用すると、多くの問題が発生するということです。詳細についてはSamyGoを参照してください。Windows を使用した場合の問題のいくつかは、そこに詳細に示されていますが、次のとおりです。

  • ACL を使用してファイルのアクセス許可と所有権を設定します (Linux との互換性はありません)。
  • シンボリック リンクを作成する独自の方法があります (Linux との互換性はありません)。
  • 固定 NTFS ドライブに大文字と小文字を区別しないデフォルトを使用します。(もともと Linux で圧縮されていたアーカイブを、黙って壊すことがよくあります。)
  • ファイル パスに Win32 (非 POSIX) 標準を使用します (Linux との互換性はありません)。
  • NL のみを使用する POSIX とは対照的に、行末 (EOL) 表現に 2 文字のキャリッジ リターンと改行 ("\r" & "\n") を使用します。

したがって、サードパーティのデバッグに時間を無駄にしないためには、他の投稿の XDA リンクに示されているように、独自のクロスコンパイラをゼロから構築する方がはるかに優れています。Android の登場以来、これはもはや難しくありません。

于 2013-10-29T22:13:45.380 に答える