【问题标题】:Compiling with arm-fsl-linux-gnueabi-gcc: int64_t is 32 bit long使用 arm-fsl-linux-gnueabi-gcc 编译:int64_t 为 32 位长
【发布时间】:2020-02-21 22:11:51
【问题描述】:

我正在使用 arm-fsl-linux-gnueabi 交叉编译 imx28 cpu:

[vladimir@vladimir src]$ arm-fsl-linux-gnueabi-g++ -v
Using built-in specs.
Target: arm-fsl-linux-gnueabi
Configured with: /work/arm-toolchains/tmp/src/gcc-4.4.4/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-fsl-linux-gnueabi --prefix=/work/arm_fsl_gcc_4.4.4_multilib --with-sysroot=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --enable-languages=c,c++ --with-pkgversion=4.4.4_09.06.2010 --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-mpfr=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-ppl=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-cloog=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/work/arm_fsl_gcc_4.4.4_multilib/arm-fsl-linux-gnueabi/multi-libs --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long --enable-multilib --with-system-zlib --enable-lto
Thread model: posix
gcc version 4.4.4 (4.4.4_09.06.2010) 

以下代码行:

info->mask = 0xffffffffffffffff;

给我以下错误:

warning: integer constant is too large for 'long' type

我尝试了一切,确保将 int64_t 定义为 long long int,甚至尝试手动对其进行 typedef,但它仍然给我错误。

我也尝试了不同的 -mcpu 选项。

有没有办法在 imx28 上使用 int64_t,还是我应该放弃?

【问题讨论】:

  • sizeof() 显示什么(不需要执行,只需编译一个三行测试程序并反汇编),如果你尝试 -1 而不是那个数字和或强制那个数字被签名怎么办,也许编译器认为它是无符号的并且错误是正确的。试试 0xFFFFFFFFFFFFFFFFLL
  • 您的主机是 32 位的,它可能选择了错误的 stdint.h
  • 啊它说 long 类型是 long 是 32 位,你需要 long long。所以你可能有一个 stdint.h 问题如果你声明它 long long 会发生什么?
  • made sure int64_t is defined to long long int, - 但info->mask是什么类型?
  • 对不起,忘了说,info->mask 是 int64_t

标签: c++ gcc arm cross-compiling


【解决方案1】:

根据您的评论。

尝试 0xFFFFFFFFFFFFFFFFLL 或 -1

【讨论】:

猜你喜欢
  • 2015-12-20
  • 2013-01-29
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多