Hi Mike, Thanks for your help. I have solved the problem. Just as you said , the .so file was bad . It is very strange When I using ld to translate the .o to the .so, I should never place the .o compile by luajit in the front of other .o . Otherwise the "OS/ABI" field of ELF header will be changed to "ARM". The correct value is "UNIX - System V". This is my link command below: the scimarklib.o is compile by luajit. /proj/toolchain/armv7a-vfp-neon-wrs-linux/host-cross/usr/toolchain/bin/arm-wrs-linux-gnueabi-ld --sysroot=/proj/toolchain/armv7a-vfp-neon-wrs-linux/sysroots/cortexa9-vfp-neon-wrs-linux-gnueabi -share -fPIC scimarklib.o -L./ -lluajit-5.1 -o scimarklibarm.so By the way , We plan to use Cortex A57 arm cpu on our board . Will luajit support ARM64 architecture in the next two years? Thanks again. Regards Cheng At 2014-09-30 20:18:21, "Mike Pall" <mike-1409@xxxxxxxxxx> wrote: >chzong wrote: >> The binary has more information ,it has more flags and attributes. >> I think the .o compiled by command "luajit -b -a arm" without the flags >> and attributes will not work on my target board. >> How can I make the .o with the flags and attributes ? > >No, the .o is fine. You need to fix how you translate from the .o >to the .so. > >--Mike >