2017-11-10 4 views
1

arm-linux-androideabi를 사용하여 android 용 util-linux 라이브러리를 크로스 컴파일합니다.android 용 util-linux 라이브러리를 컴파일하는 중 오류 발생

toolchain을 생성하고 configure 문을 으로 실행했습니다 ./configure --prefix =/opt/android --build = $ {BUILD} --host = arm-linux-androideabi --disable-rpath - without-util --without-ncursesw --without-ncurses --without-tinfo

다음과 같은 오류가 발생합니다.

/u/CC/android-ndk-toolchain/sysroot/usr/include/fcntl.h:49:13: warning: redundant redeclaration of 'fcntl' [-Wredundant-decls] 
In file included from libblkid/src/topology/sysfs.c:17:0: 
/u/CC/android-ndk-toolchain/sysroot/usr/include/unistd.h:143:12: note: previous declaration of 'fcntl' was here 
In file included from ./include/blkdev.h:11:0, 
       from ./libblkid/src/blkidP.h:34, 
       from libblkid/src/topology/topology.h:4, 
       from libblkid/src/topology/sysfs.c:21: 
/u/CC/android-ndk-toolchain/sysroot/usr/include/sys/ioctl.h:39:12: warning: redundant redeclaration of 'ioctl' [-Wredundant-decls] 
In file included from libblkid/src/topology/sysfs.c:17:0: 
/u/CC/android-ndk-toolchain/sysroot/usr/include/unistd.h:144:12: note: previous declaration of 'ioctl' was here 
    CCLD  libblkid.la 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: libblkid/src/.libs/libblkid_la-config.o: multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: libblkid/src/.libs/libblkid_la-evaluate.o: multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: libblkid/src/.libs/libblkid_la-save.o: multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-blkdev.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-env.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-pager.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-parse-date.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-path.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-randutils.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-strutils.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-timeutils.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-ttyutils.o): multiple definition of '_POSIX_VDISABLE' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: ./.libs/libcommon.a(libcommon_la-pager.o): previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-exec_shell.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-plymouth-ctrl.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: error: ./.libs/libcommon.a(libcommon_la-langinfo.o): multiple definition of 'l' 
/usr/lib/gcc/arm-linux-androideabi/4.7.4/../../../../arm-linux-androideabi/bin/ld: libblkid/src/.libs/libblkid_la-cache.o: previous definition here 
collect2: error: ld returned 1 exit status 
Makefile:5414: recipe for target 'libblkid.la' failed 
make[2]: *** [libblkid.la] Error 1 
make[2]: Leaving directory '/u/CC/util-linux-2.31' 
Makefile:11990: recipe for target 'all-recursive' failed 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory '/u/CC/util-linux-2.31' 
Makefile:5002: recipe for target 'all' failed 
make: *** [all] Error 2 

이 문제를 해결하는 데 도움을주십시오. 미리 감사드립니다.

+0

이미 오류가 발생 했으므로 중복 된 redcalartion으로 이동하여 불만 사항을 확인해야합니다. – LethalProgrammer

답변

0

재 선언에 대한 첫 번째 경고는 손상된 NDK 헤더 때문입니다. "통합 헤더"가 될 때까지 그들은 <fcntl.h><unistd.h>에서 맹목적으로 fcntl(), ioctl() (그리고 아마도 더 많은 것을) 선언하고 있으며, 이미 선언되었는지는 확인하지 않습니다. 통합 헤더는 올바른 방식으로 수행하며 NDK r14부터 사용할 수 있습니다 (here 참조).

약 두 번째 문제 - 당신은 우연히 전역 변수 또는 함수로 정의 된 l_POSIX_VDISABLE을 가질 수 있습니다. 빌드 스크립트에서 문제가있는 것 같습니다. 실제 컴파일러/링커 명령을 보는 것이 좋을 것입니다.