rust 静态 android,Building static lib for Android: no archive symbol table

I'm on an OSX 10.10.2 machine, with the latest Rust nightly rustc 1.1.0-dev (aecf3d8b6 2015-05-01) (built 2015-05-01) on a homebuilt version with Android support setup via https://github.com/rust-lang/rust-wiki-backup/blob/master/Doc-building-for-android.md

I'm trying a minimal case with

// lib.rs

#[no_mangle]

pub extern fn double_input(input: i32) -> i32 {

input * 2

}

//thing.c

#include

extern int32_t double_input(int32_t input);

librust.a lib is built using rustc --target=arm-linux-androideabi -C linker=$ANDROID_TOOLCHAIN/bin/arm-linux-androideabi-gcc -C link-args=-pie src/lib.rs --crate-type=staticlib

and linking against my simple project

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := rust_prebuilt

LOCAL_SRC_FILES := librust.a

include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := HelloRust

LOCAL_SRC_FILES := thing.c

LOCAL_STATIC_LIBRARIES += rust_prebuilt

include $(BUILD_SHARED_LIBRARY)

After all those steps, the build process fails during android linkage:

toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:

error: /Users/pakoito/Rust/RustyAndroid/app/src/main/jni/librust.a: no archive symbol table (run ranlib)

collect2: error: ld returned 1 exit status

After running ranlib on the file I get that's empty

$ranlib liblib.a

warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: warning for library: liblib.a the table of contents is empty (no object file members in the library define global symbols)

ar t result:

__.SYMDEF SORTED

lib.o

r-morestack-morestack.o

r-compiler-rt-absvdi2.o

r-compiler-rt-absvsi2.o

r-compiler-rt-absvti2.o

r-compiler-rt-adddf3.o

r-compiler-rt-adddf3vfp.o

r-compiler-rt-addsf3.o

r-compiler-rt-addsf3vfp.o

r-compiler-rt-addvdi3.o

r-compiler-rt-addvsi3.o

r-compiler-rt-addvti3.o

r-compiler-rt-aeabi_dcmp.o

r-compiler-rt-aeabi_fcmp.o

r-compiler-rt-aeabi_idivmod.o

r-compiler-rt-aeabi_ldivmod.o

r-compiler-rt-aeabi_memcmp.o

r-compiler-rt-aeabi_memcpy.o

r-compiler-rt-aeabi_memmove.o

r-compiler-rt-aeabi_memset.o

r-compiler-rt-aeabi_uidivmod.o

r-compiler-rt-aeabi_uldivmod.o

r-compiler-rt-apple_versioning.o

r-compiler-rt-ashldi3.o

r-compiler-rt-ashlti3.o

r-compiler-rt-ashrdi3.o

r-compiler-rt-ashrti3.o

r-compiler-rt-bswapdi2.o

r-compiler-rt-bswapsi2.o

r-compiler-rt-clear_cache.o

r-compiler-rt-clzdi2.o

r-compiler-rt-clzsi2.o

r-compiler-rt-clzti2.o

r-compiler-rt-cmpdi2.o

r-compiler-rt-cmpti2.o

r-compiler-rt-comparedf2.o

r-compiler-rt-comparesf2.o

r-compiler-rt-comparetf2.o

r-compiler-rt-ctzdi2.o

r-compiler-rt-ctzsi2.o

r-compiler-rt-ctzti2.o

r-compiler-rt-divdc3.o

r-compiler-rt-divdf3.o

r-compiler-rt-divdf3vfp.o

r-compiler-rt-divdi3.o

r-compiler-rt-divmoddi4.o

r-compiler-rt-divmodsi4.o

r-compiler-rt-divsc3.o

r-compiler-rt-divsf3.o

r-compiler-rt-divsf3vfp.o

r-compiler-rt-divsi3.o

r-compiler-rt-divti3.o

r-compiler-rt-divxc3.o

r-compiler-rt-eprintf.o

r-compiler-rt-eqdf2vfp.o

r-compiler-rt-eqsf2vfp.o

r-compiler-rt-extendsfdf2.o

r-compiler-rt-extendsfdf2vfp.o

r-compiler-rt-ffsdi2.o

r-compiler-rt-ffsti2.o

r-compiler-rt-fixdfdi.o

r-compiler-rt-fixdfsi.o

r-compiler-rt-fixdfsivfp.o

r-compiler-rt-fixdfti.o

r-compiler-rt-fixsfdi.o

r-compiler-rt-fixsfsi.o

r-compiler-rt-fixsfsivfp.o

r-compiler-rt-fixsfti.o

r-compiler-rt-fixunsdfdi.o

r-compiler-rt-fixunsdfsi.o

r-compiler-rt-fixunsdfsivfp.o

r-compiler-rt-fixunsdfti.o

r-compiler-rt-fixunssfdi.o

r-compiler-rt-fixunssfsi.o

r-compiler-rt-fixunssfsivfp.o

r-compiler-rt-fixunssfti.o

r-compiler-rt-fixunsxfdi.o

r-compiler-rt-fixunsxfsi.o

r-compiler-rt-fixunsxfti.o

r-compiler-rt-fixxfdi.o

r-compiler-rt-fixxfti.o

r-compiler-rt-floatdidf.o

r-compiler-rt-floatdisf.o

r-compiler-rt-floatdixf.o

r-compiler-rt-floatsidf.o

r-compiler-rt-floatsidfvfp.o

r-compiler-rt-floatsisf.o

r-compiler-rt-floatsisfvfp.o

r-compiler-rt-floattidf.o

r-compiler-rt-floattisf.o

r-compiler-rt-floattixf.o

r-compiler-rt-floatundidf.o

r-compiler-rt-floatundisf.o

r-compiler-rt-floatundixf.o

r-compiler-rt-floatunsidf.o

r-compiler-rt-floatunsisf.o

r-compiler-rt-floatunssidfvfp.o

r-compiler-rt-floatunssisfvfp.o

r-compiler-rt-floatuntidf.o

r-compiler-rt-floatuntisf.o

r-compiler-rt-floatuntixf.o

r-compiler-rt-gcc_personality_v0.o

r-compiler-rt-gedf2vfp.o

r-compiler-rt-gesf2vfp.o

r-compiler-rt-gtdf2vfp.o

r-compiler-rt-gtsf2vfp.o

r-compiler-rt-int_util.o

r-compiler-rt-ledf2vfp.o

r-compiler-rt-lesf2vfp.o

r-compiler-rt-lshrdi3.o

r-compiler-rt-lshrti3.o

r-compiler-rt-ltdf2vfp.o

r-compiler-rt-ltsf2vfp.o

r-compiler-rt-moddi3.o

r-compiler-rt-modsi3.o

r-compiler-rt-modti3.o

r-compiler-rt-muldc3.o

r-compiler-rt-muldf3.o

r-compiler-rt-muldf3vfp.o

r-compiler-rt-muldi3.o

r-compiler-rt-mulodi4.o

r-compiler-rt-mulosi4.o

r-compiler-rt-muloti4.o

r-compiler-rt-mulsc3.o

r-compiler-rt-mulsf3.o

r-compiler-rt-mulsf3vfp.o

r-compiler-rt-multi3.o

r-compiler-rt-mulvdi3.o

r-compiler-rt-mulvsi3.o

r-compiler-rt-mulvti3.o

r-compiler-rt-mulxc3.o

r-compiler-rt-nedf2vfp.o

r-compiler-rt-negdf2.o

r-compiler-rt-negdf2vfp.o

r-compiler-rt-negdi2.o

r-compiler-rt-negsf2.o

r-compiler-rt-negsf2vfp.o

r-compiler-rt-negti2.o

r-compiler-rt-negvdi2.o

r-compiler-rt-negvsi2.o

r-compiler-rt-negvti2.o

r-compiler-rt-nesf2vfp.o

r-compiler-rt-paritydi2.o

r-compiler-rt-paritysi2.o

r-compiler-rt-parityti2.o

r-compiler-rt-popcountdi2.o

r-compiler-rt-popcountsi2.o

r-compiler-rt-popcountti2.o

r-compiler-rt-powidf2.o

r-compiler-rt-powisf2.o

r-compiler-rt-powitf2.o

r-compiler-rt-powixf2.o

r-compiler-rt-restore_vfp_d8_d15_regs.o

r-compiler-rt-save_vfp_d8_d15_regs.o

r-compiler-rt-subdf3.o

r-compiler-rt-subdf3vfp.o

r-compiler-rt-subsf3.o

r-compiler-rt-subsf3vfp.o

r-compiler-rt-subvdi3.o

r-compiler-rt-subvsi3.o

r-compiler-rt-subvti3.o

r-compiler-rt-switch16.o

r-compiler-rt-switch32.o

r-compiler-rt-switch8.o

r-compiler-rt-switchu8.o

r-compiler-rt-sync_synchronize.o

r-compiler-rt-trampoline_setup.o

r-compiler-rt-truncdfsf2.o

r-compiler-rt-truncdfsf2vfp.o

r-compiler-rt-ucmpdi2.o

r-compiler-rt-ucmpti2.o

r-compiler-rt-udivdi3.o

r-compiler-rt-udivmoddi4.o

r-compiler-rt-udivmodsi4.o

r-compiler-rt-udivmodti4.o

r-compiler-rt-udivsi3.o

r-compiler-rt-udivti3.o

r-compiler-rt-umoddi3.o

r-compiler-rt-umodsi3.o

r-compiler-rt-umodti3.o

r-compiler-rt-unorddf2vfp.o

r-compiler-rt-unordsf2vfp.o

r-std-std-4e7c5e5c.o

r-std-r-rust_builtin-rust_builtin.o

r-std-r-rust_builtin-rust_android_dummy.o

r-std-r-backtrace-atomic.o

r-std-r-backtrace-dwarf.o

r-std-r-backtrace-fileline.o

r-std-r-backtrace-posix.o

r-std-r-backtrace-print.o

r-std-r-backtrace-sort.o

r-std-r-backtrace-state.o

r-std-r-backtrace-backtrace.o

r-std-r-backtrace-simple.o

r-std-r-backtrace-elf.o

r-std-r-backtrace-mmapio.o

r-std-r-backtrace-mmap.o

r-std-r-rustrt_native-rust_try.o

r-std-r-rustrt_native-record_sp.o

r-collections-collections-4e7c5e5c.o

r-rustc_unicode-rustc_unicode-4e7c5e5c.o

r-rand-rand-4e7c5e5c.o

r-alloc-alloc-4e7c5e5c.o

r-alloc-r-jemalloc-jemalloc.pic.o

r-alloc-r-jemalloc-arena.pic.o

r-alloc-r-jemalloc-atomic.pic.o

r-alloc-r-jemalloc-base.pic.o

r-alloc-r-jemalloc-bitmap.pic.o

r-alloc-r-jemalloc-chunk.pic.o

r-alloc-r-jemalloc-chunk_dss.pic.o

r-alloc-r-jemalloc-chunk_mmap.pic.o

r-alloc-r-jemalloc-ckh.pic.o

r-alloc-r-jemalloc-ctl.pic.o

r-alloc-r-jemalloc-extent.pic.o

r-alloc-r-jemalloc-hash.pic.o

r-alloc-r-jemalloc-huge.pic.o

r-alloc-r-jemalloc-mb.pic.o

r-alloc-r-jemalloc-mutex.pic.o

r-alloc-r-jemalloc-prof.pic.o

r-alloc-r-jemalloc-quarantine.pic.o

r-alloc-r-jemalloc-rtree.pic.o

r-alloc-r-jemalloc-stats.pic.o

r-alloc-r-jemalloc-tcache.pic.o

r-alloc-r-jemalloc-util.pic.o

r-alloc-r-jemalloc-tsd.pic.o

r-alloc-r-jemalloc-valgrind.pic.o

r-libc-libc-4e7c5e5c.o

r-core-core-4e7c5e5c.o

Result of $ANDROID_TOOLCHAIN/bin/arm-linux-androideabi-nm lib.o

U _GLOBAL_OFFSET_TABLE_

00000000 t _ZN12double_input10__rust_abiE

U _ZN9panicking5panic20h0c7496eebc6bd7aapLyE

U __aeabi_unwind_cpp_pr0

U __morestack

00000000 r const782

00000000 T double_input

00000000 d panic_loc786

00000000 r str783

00000000 r str785

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值