编译Android下纯C的静态程序,undefined reference to raise

尝试在Android下编译纯C的静态程序,执行gcc -v -static -o sayhi sayhi.c后有3条重要的命令

 

ccl -quiet -v -iprefix /home/carmenloklok/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi/bin/../lib/gcc/arm-linux-androideabi/4.4.3/ sayhi.c -mbionic -fpic -quiet -dumpbase sayhi.c -march=armv5te -mfloat-abi=soft -mfpu=vfp -auxbase sayhi -version -o /tmp/cc1JRQYL.s

 

as -v -march=armv5te -mfloat-abi=soft -mfpu=vfp -meabi=5 -o /tmp/ccqjmzvz.o /tmp/cc1JRQYL.s

 

ld --sysroot=/home/ahsieh/ndk-release/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/sysroot -Bstatic -dynamic-linker /system/bin/linker -X -m armelf_linux_eabi -o sayhi crtbegin_static.o /tmp/ccqjmzvz.o --start-group -lgcc -lc --end-group crtend_android.o

 

我一开始没有执行gcc -v -o sayhi sayhi.c来看.没有在ld的参数里加上 -Bstatic 和 --start-group --end-group .于是会出现 undefined reference to raise .具体的原因没有查出.好像是因为eabi的缘故.一段时间后查一下具体的原因,以及--start-group --end-group的作用.

你可能感兴趣的:(reference)