用arm-linux-androideabi-gcc编译libev-4.24
按照通用步骤:
./configure --host=arm-linux CC=arm-linux-androideabi-gcc --prefix=/mnt/share/lib
make
得到目标lib;
不行。
报错:找不到类型 fd_mask;
报错log:
[08:56:46]In file included from ev.c:2708:0:
[08:56:46]ev_select.c: In function 'select_modify':
[08:56:46]ev_select.c:109:5: error: unknown type name 'fd_mask'
[08:56:46] fd_mask mask = 1UL << (fd % NFDBITS);
[08:56:46] ^
[08:56:46]ev_select.c:124:13: error: 'fd_mask' undeclared (first use in this function)
[08:56:46] ((fd_mask *)vec_ri) [vec_max] =
[08:56:46] ^
查看源码:
#ifdef ANDROID
/* supposedly, android doesn't typedef fd_mask */
# undef EV_USE_SELECT
# define EV_USE_SELECT 0
/* supposedly, we need to include syscall.h, not sys/syscall.h, so just disable */
# undef EV_USE_CLOCK_SYSCALL
# define EV_USE_CLOCK_SYSCALL 0
#endif
需要定义ANDROID宏。。。。。
我不知道如何在./configure时候加入宏定义;
也不知道make时候怎么添加宏定义;
但我知道gcc时候可以-D指定编译宏。
所以打开生成的Makefile
CPPFLAGS =
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H -DANDROID
DEPDIR = .deps
DLLTOOL = false
DSYMUTIL =
DUMPBIN =
在DEFS 参数后面添加-DANDROID编译通过。
各位兄弟,如果你有更好办法麻烦提供下。