私は自分を苦しめるのが好きなので、GCC 4.7 を Android に移植した後、すぐに GCC 4.8 を Android に移植してみることにしました。
ビルドの libcpp 部分で次のエラーが発生しました。
../../gcc-4.8/libcpp/files.c:725:27: error: cannot convert 'long long int*' to 'off_t* {aka long int*}' for argument '7' to 'unsigned char* _cpp_convert_input(cpp_reader*, const char*, unsigned char*, size_t, size_t, const unsigned char**, off_t*)'
私の質問は次のとおりです。この変換は可能ですか?
編集:暗黙の変換に依存するのではなく、キャストを記述する必要があるという回答を最初に投稿しましたが、それを行った後に発生していた問題を考慮して削除しました。
問題のある元のコードは次のとおりです。
file->buffer = _cpp_convert_input (pfile,
CPP_OPTION (pfile, input_charset),
buf, size + 16, total,
&file->buffer_start,
&file->st.st_size);
これが私が試したキャストです(注:私はCについて初歩的な理解しか持っていません):
off_t ot = (off_t) file->st.st_size
上記のキャストを使用すると、ターゲット デバイスで実行すると、cc1 バイナリから「Bad address」エラーが発生します。