- 论坛徽章:
- 0
|
本帖最后由 crifan 于 2010-05-07 12:48 编辑
1。看了下代码,你说的那个
va_arg(args,unsigned long long)
是不是这个:
在lib_generic/vsprintf.c中的:
int vsprintf(char *buf, const char *fmt, va_list args)
{
..
#ifdef CONFIG_SYS_64BIT_VSPRINTF
if (qualifier == 'q') /* "quad" for 64 bit variables */
num = va_arg(args, unsigned long long);
else
#endif
...
}
是的话,那你应已经加了对应的宏,去启动64位的支持了吧?
我的是在头文件中加了:
#define CONFIG_SYS_64BIT_VSPRINTF 1
#define CONFIG_SYS_64BIT_STRTOUL 1
其中CONFIG_SYS_64BIT_STRTOUL对应着cmd_nand.c中,很多输入的字符串变量,转换成64位的数值要用到lib_generic/vsprintf.c中的simple_strtoull
2。关于编译器的版本,我的是用
buildroot v2009.08
编译的gcc 4.2.4版本的arm-linux-gcc
配置里面,加了大文件支持:
[ * ] Enable large file (files > 2 GB) support?
不知道这个参数是否对编译出来的,是否支持64位的打印的那些函数有影响。
如果有,那你的编译时候,也要加上。
3。另外,我用的OABI,如果你用的是EABI,不知道是否有可能是EABI的兼容性不够好?(个人感觉,这个可能性极小。。。) |
|