2016-08-19 6 views
0

私はUbuntuTouchに移植しようとしているAndroidのAOSPソースツリーを持っています。オリジナルのツリーはAOSPの作業用ロムを構築していますが、Ubuntuをビルドしようとすると、私のビルドはさまざまなエラーを伴う多くのファイルで失敗します。 "Y"はMakeを初期化しますが、それは同じ名前のマクロと混同しており、予測できない種類のエラーにつながります。実際、私は以前の問題を解決することができました。これは.cソースファイルに失敗した関数の直前でマクロYを定義していません。それは良い回避策はありませんが、私が知っている、と今もう一つは、(私はそれが関係だと思うこと)ポップアップ、と私はすべてのこれらのファイルを一つずつダーティパッチ適用の疲れ:どのファイルがマクロを定義しているか調べる

system/core/include/utils/StrongPointer.h:101:23: error: expected nested-name-specifier before numeric constant 
system/core/include/utils/StrongPointer.h:101:23: error: expected '>' before numeric constant 

これが故障しています行:

100 private:  
101  template<typename Y> friend class sp; 
102  template<typename Y> friend class wp; 
103  void set_pointer(T* ptr); 
104  T* m_ptr; 

私は疑いのない同じ問題ですか? ツリー全体のどのファイルがそのマクロをグローバルに定義しているかをどのように見つけることができますか?

答えて

0

私のシェルに-xフラグを使用すると、コンパイラ呼び出しのコマンドラインで "-DY"が渡され、明らかに "Y"という名前のマクロが定義され、1に初期化されていることがわかりました。 調査の結果、 ProjectConfig.mk変数から取られたいくつかの値は、大文字にされた後、マクロとしてプリプロセッサに渡されます。私は間違ってこれらの値の1つを "y"に設定し、ビルドシステムがマクロ "Y"をツールチェーンに渡して、この混乱を引き起こしてしまった。

多くのおかげで、irc.freenode.org/#gccの人に感謝します。

関連する問題