Make继续使用原生gcc而不是Android NDK

时间:2015-02-19 20:28:17

标签: linux gcc android-ndk makefile

首先,我只知道关于makefile的基础知识,而且我是Android NDK的新手。

我有x64 Linux Mint 17.1和Android NDK r8e,我正在尝试构建NetHack for Android

README中所述,基本思路是使用本地Android NDK路径修改makefile:

NDK = /path/to/android-ndk-r8d
SYSROOT=$(NDK)/platforms/android-9/arch-arm
CC = $(NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$(SYSROOT)

但我一直收到这个错误:

  

cc -m32 -o makedefs makedefs.o ./monst.o ./objects.o   / usr / bin / ld:在搜索-lgcc时跳过不兼容的/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a

显然正在使用 / usr / bin / ld 而不是 arm-linux-androideabi-ld ,它不会找到 libgcc.a < / strong>在Android NDK文件夹中。 我错过了一些环境变量或参数吗?

感谢。

UPD1

这是完整的输出:

touch ../src/config.h-t
/opt/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/ndk/android-ndk-r8e/platforms/android-9/arch-arm -DANDROID -Wno-format -fsigned-char -I../include -c monst.c
/opt/android/ndk/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/opt/android/ndk/android-ndk-r8e/platforms/android-9/arch-arm -DANDROID -Wno-format -fsigned-char -I../include -c objects.c
make[2]: Entering directory `/home/rzhilich/Projects/NetHack-Android/util'
cc -m32 -Wno-format  -I../include   -c -o makedefs.o makedefs.c
makedefs.c: In function ‘do_rumors’:
makedefs.c:361:2: warning: format not a string literal and no format arguments [-Wformat-security]
  Fprintf(ofp,Dont_Edit_Data);
  ^
makedefs.c: In function ‘do_date’:
makedefs.c:560:2: warning: format not a string literal and no format arguments [-Wformat-security]
  Fprintf(ofp,Dont_Edit_Code);
  ^
makedefs.c: In function ‘do_dungeon’:
makedefs.c:1232:2: warning: format not a string literal and no format arguments [-Wformat-security]
  Fprintf(ofp,Dont_Edit_Data);
  ^
makedefs.c: In function ‘do_monstr’:
makedefs.c:1354:5: warning: format not a string literal and no format arguments [-Wformat-security]
     Fprintf(ofp,Dont_Edit_Code);
     ^
makedefs.c: In function ‘do_permonst’:
makedefs.c:1395:2: warning: format not a string literal and no format arguments [-Wformat-security]
  Fprintf(ofp,Dont_Edit_Code);
  ^
makedefs.c: In function ‘do_objs’:
makedefs.c:1711:2: warning: format not a string literal and no format arguments [-Wformat-security]
  Fprintf(ofp,Dont_Edit_Code);
  ^
makedefs.c: In function ‘do_vision’:
makedefs.c:1866:5: warning: format not a string literal and no format arguments [-Wformat-security]
     Fprintf(ofp,Dont_Edit_Code);
     ^
makedefs.c:1891:5: warning: format not a string literal and no format arguments [-Wformat-security]
     Fprintf(ofp,Dont_Edit_Code);
     ^
cc -m32 -Wno-format  -I../include -c ../src/monst.c -o monst.o
cc -m32 -Wno-format  -I../include -c ../src/objects.c -o objects.o
cc -m32 -o makedefs makedefs.o ./monst.o ./objects.o
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
make[2]: *** [makedefs] Error 1
make[2]: Leaving directory `/home/rzhilich/Projects/NetHack-Android/util'
make[1]: *** [../util/makedefs] Error 2
make[1]: Leaving directory `/home/rzhilich/Projects/NetHack-Android/src'
make: *** [nethack] Error 2

UPD2

显然安装说明不完整。出于某种原因, util 文件夹不是使用Android NDK gcc构建的,而是使用系统默认 cc 。安装以下软件包后:

  • GCC-4.6
  • GCC-4.6-multilib的
  • GCC-臂-Linux的androideabi

我使用update-alternatives将系统默认gcc版本设置为4.6。它解决了我的问题。

1 个答案:

答案 0 :(得分:0)

了解iw的方式 http://z4ziggy.wordpress.com/category/aircrack/

tcpdump已构建完成 https://github.com/chatch/tcpdump-android.git

重要的是

    echo "| CREATING TOOLCHAIN |"