- 论坛徽章:
- 0
|
加了-liconv
又要打扰老兄了。
你的glib包编译时,出现这个警告,没在意,继续我的编译之旅。(好多库,我先汗一个。)
警告如下:
arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -I../glib -I../../libiconv-1.12/include/ -DG_DISABLE_CAST_CHECKS -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -pthread -O2 -Wall -g -DLIBDIR -DG_LOG_DOMAIN=\"GLib-GRegex\" -DSUPPORT_UCP -DSUPPORT_UTF8 -DNEWLINE=-1 -DMATCH_LIMIT=10000000 -DMATCH_LIMIT_RECURSION=8192 -DMAX_NAME_SIZE=32 -DMAX_NAME_COUNT=10000 -DMAX_DUPLENGTH=30000 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -DPCRE_STATIC -DGLIB_COMPILATION -c -o /usr/src/gtk_package/glib/glib-2.18.2/glib/gslice.o /usr/src/gtk_package/glib/glib-2.18.2/glib/gslice.c
/usr/src/gtk_package/glib/glib-2.18.2/glib/gslice.c: In function `allocator_memalign':
/usr/src/gtk_package/glib/glib-2.18.2/glib/gslice.c:1137: warning: implicit declaration of function `posix_memalign'
到了编译pango时,出错了。上面的错误在加了iconv库后消失,
现在只剩下下面的错误。
arm-linux-gcc -I/home/zzl/gtk_dfb/target/include -Wall -o .libs/pango-querymodules querymodules.o -L/home/zzl/gtk_dfb/target/lib ./.libs/libpangoft2-1.0.so /usr/src/gtk_package/pango-1.16.5/pango/.libs/libpango-1.0.so -L/lib /home/zzl/gtk_dfb/target/lib/libfontconfig.so /home/zzl/gtk_dfb/target/lib/libxml2.so /home/zzl/gtk_dfb/target/lib/libfreetype.so -lz ./.libs/libpango-1.0.so -lm /home/zzl/gtk_dfb/target/lib/libiconv.so -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -Wl,--rpath -Wl,/home/zzl/gtk_dfb/target/lib
/home/zzl/gtk_dfb/target/lib/libglib-2.0.a(gslice.o): In function `allocator_add_slab':
/usr/src/gtk_package/glib/glib-2.18.2/glib/gslice.c:1137: undefined reference to `posix_memalign'
collect2: ld returned 1 exit status
make[4]: *** [pango-querymodules] 错误 1
make[4]: Leaving directory `/usr/src/gtk_package/pango-1.16.5/pango'
make[3]: *** [all-recursive] 错误 1
make[3]: Leaving directory `/usr/src/gtk_package/pango-1.16.5/pango'
make[2]: *** [all] 错误 2
make[2]: Leaving directory `/usr/src/gtk_package/pango-1.16.5/pango'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/usr/src/gtk_package/pango-1.16.5'
make: *** [all] 错误 2
于是,查看glib 下gslice.c ,发现开头是这样的
#include "config.h"
#if defined HAVE_POSIX_MEMALIGN && defined POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS
# define HAVE_COMPLIANT_POSIX_MEMALIGN 1
#endif
#ifdef HAVE_COMPLIANT_POSIX_MEMALIGN
#define _XOPEN_SOURCE 600 /* posix_memalign() */
#endif
在config.h中, HAVE_POSIX_MEMALIGN 和 POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS 均定义了,所以
_XOPEN_SOURCE为600 ,因为posix_memalign是stdlib.h中的函数定义,遂继续查看stdlib.h,发现代码如下:
#ifdef __USE_XOPEN2K
/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__THROW __attribute_malloc__;
#endif
因为我用的是uclib库,所以可能有所不同,
于是将gslice.c中的_XOPEN_SOURCE改成与stdlib.h中一致,即改成
#define __USE_XOPEN2K 600
重新编译了一下glib库,然而令人失望,还是无济于事。
不知道原因出在哪里,望告知,万分感激。:em12: :em12: :em12: |
|