0

64 ビット CentOS 6.x で C++ プロジェクトをビルドする際にいくつかのエラーに直面しています。プロジェクトは 32 ビット CentOS 6.x で正常にビルドされています。これらのタイプのエラーに関するスレッドがいくつかありますが、もっと明確にする必要があります。エラーは-

/usr/include/sys/types.h:198: error: conflicting declaration ‘typedef long int int64_t’
./Headers/PALsystypes.h:22: error: ‘int64_t’ has a previous declaration as ‘typedef long  long int int64_t’
/usr/include/sys/types.h:204: error: conflicting declaration ‘typedef long unsigned int u_int64_t’
./Headers/PALsystypes.h:23: error: ‘u_int64_t’ has a previous declaration as ‘typedef long long unsigned int u_int64_t’

そして、以下のようなエラーがさらにあります-

d5-x86_64.o md5-x86_64.s
md5-x86_64.s: Assembler messages:
md5-x86_64.s:41: Error: 0xd76aa478 out range of signed 32bit displacement
md5-x86_64.s:50: Error: 0xe8c7b756 out range of signed 32bit displacement
md5-x86_64.s:68: Error: 0xc1bdceee out range of signed 32bit displacement
md5-x86_64.s:77: Error: 0xf57c0faf out range of signed 32bit displacement
md5-x86_64.s:95: Error: 0xa8304613 out range of signed 32bit displacement
md5-x86_64.s:104: Error: 0xfd469501 out range of signed 32bit displacement
md5-x86_64.s:122: Error: 0x8b44f7af out range of signed 32bit displacement
md5-x86_64.s:131: Error: 0xffff5bb1 out range of signed 32bit displacement

この投稿に対するフィードバックをお寄せください。

4

1 に答える 1

1
typedef int foo;
typedef float foo;

最小限の例がありますが、これは 32 ビットまたは 64 ビットとは関係ありません。問題は、一部のヘッダー ファイルが、既に宣言されている別のシンボルよりもシンボルを宣言し、互換性のない方法で宣言していることです。システムの stdint.h から取得する必要がある、特に int64_t を宣言するビジネスがない PALsystypes のせいだと思います。

アセンブラの警告に関しては、変数と定数の両方に符号なし整数を使用することを検討してください (0x123u は符号なし)。

于 2013-01-25T06:13:15.503 に答える