Я пытаюсь собрать Android L для 64-битной архитектуры.
Мой код выглядит так:
#if (HAS_LARGE_FILE_SUPPORT)
#define _FILE_OFFSET_BITS 64 //Defined in header file
/*Some File operations*/
#if HAS_LARGE_FILE_SUPPORT
return fseeko(iFile, offset, seekmode);
#else
return fseek(iFile, offset, seekmode);
/*Some File operations*/
#if HAS_LARGE_FILE_SUPPORT
return ftello(iFile, offset, seekmode);
#else
return ftell(iFile, offset, seekmode);
Я получаю ошибки ниже ftello
и fseeko
:
error: call to 'ftello' declared with attribute error: not available with _FILE_OFFSET_BITS=64
error: call to 'fseeko' declared with attribute error: not available with _FILE_OFFSET_BITS=64
Я проверил fseeko
и ftello
, на страницах руководства упоминается, что определение _FILE_OFFSET_BITS
со значением 64 превратит off_t
в 64-битный тип. Тем не менее я вижу эту ошибку. Я проверил эту ошибку, но не нашел удовлетворительного ответа.
Будет очень полезно, если кто-нибудь может помочь мне с этим.
-D_LARGEFILE_SOURCE
(см. stackoverflow.com/q/14184031/694576)? - person alk   schedule 28.09.2015#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
- person Android_Noob   schedule 29.09.2015int fseeko(FILE *stream, off_t offset, int whence);
который не соответствует опубликованным вами прототипам. - person user3629249   schedule 30.09.2015int fseeko(...
Эээ, что пожалуйста? - person alk   schedule 03.10.2015APP_CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
- person Leandros   schedule 06.10.2015ftell
принимает только один аргумент,FILE*
. Иfseek
изменяется только, это смещение принимаетoff_t
, аftell
возвращаетoff_t
, а не простоlong
. - person Leandros   schedule 06.10.2015int fseeko(FILE *stream, off_t offset, int whence)
иoff_t ftello(FILE *stream)
. Взято со справочных страниц Linux здесь. - person Leandros   schedule 06.10.2015Application.mk
иAndroid.mk
, пожалуйста? - person Leandros   schedule 06.10.2015ftello
иfseeko
, даже цитируя его. - person alk   schedule 07.10.2015