免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2860 | 回复: 0

想移植phoneme,必须静态编译才能运行,但无法成功链接 [复制链接]

论坛徽章:
0
发表于 2011-11-29 13:41 |显示全部楼层
通过一些手段,我知道了目标文件是由以下命令链接生成的:
arm-none-linux-gnueabi-gcc  -g -Wl,-export-dynamic -L/usr/arm-2011.03/arm-none-linux/gnueabi/libc/usr/lib -o ../../build/linux-arm-generic/./bin/cvm ../../build/linux-arm-generic/./obj/gen_semispace.o ../../build/linux-arm-generic/./obj/gen_markcompact.o ../../build/linux-arm-generic/./obj/jitir.o ../../build/linux-arm-generic/./obj/jitopt.o ../../build/linux-arm-generic/./obj/jit_common.o ../../build/linux-arm-generic/./obj/ccm_runtime.o ../../build/linux-arm-generic/./obj/ccmintrinsics.o ../../build/linux-arm-generic/./obj/gc_common.o ../../build/linux-arm-generic/./obj/gc_impl.o ../../build/linux-arm-generic/./obj/gc_stat.o ../../build/linux-arm-generic/./obj/indirectmem.o ../../build/linux-arm-generic/./obj/interpreter.o ../../build/linux-arm-generic/./obj/named_sys_monitor.o ../../build/linux-arm-generic/./obj/objsync.o ../../build/linux-arm-generic/./obj/stackmaps.o ../../build/linux-arm-generic/./obj/sync.o ../../build/linux-arm-generic/./obj/ccmintrinsics_cpu.o ../../build/linux-arm-generic/./obj/jitregman.o ../../build/linux-arm-generic/./obj/ccmintrinsics_risc.o ../../build/linux-arm-generic/./obj/arm_float_cpu.o ../../build/linux-arm-generic/./obj/TimeStamps.o ../../build/linux-arm-generic/./obj/timestamp.o ../../build/linux-arm-generic/./obj/JIT.o ../../build/linux-arm-generic/./obj/jitcompile.o ../../build/linux-arm-generic/./obj/jitirnode.o ../../build/linux-arm-generic/./obj/jitirlist.o ../../build/linux-arm-generic/./obj/jitirrange.o ../../build/linux-arm-generic/./obj/jitirblock.o ../../build/linux-arm-generic/./obj/jitirdump.o ../../build/linux-arm-generic/./obj/jitstackmap.o ../../build/linux-arm-generic/./obj/jitcodebuffer.o ../../build/linux-arm-generic/./obj/jitconstantpool.o ../../build/linux-arm-generic/./obj/jitintrinsic.o ../../build/linux-arm-generic/./obj/jitopcodemap.o ../../build/linux-arm-generic/./obj/jitpcmap.o ../../build/linux-arm-generic/./obj/jitutils.o ../../build/linux-arm-generic/./obj/jitmemory.o ../../build/linux-arm-generic/./obj/jitset.o ../../build/linux-arm-generic/./obj/jitcomments.o ../../build/linux-arm-generic/./obj/jitstats.o ../../build/linux-arm-generic/./obj/jitdebug.o ../../build/linux-arm-generic/./obj/classlink.o ../../build/linux-arm-generic/./obj/classverify.o ../../build/linux-arm-generic/./obj/constantpool.o ../../build/linux-arm-generic/./obj/mangle.o ../../build/linux-arm-generic/./obj/quicken.o ../../build/linux-arm-generic/./obj/verifycode.o ../../build/linux-arm-generic/./obj/basictypes.o ../../build/linux-arm-generic/./obj/bcattr.o ../../build/linux-arm-generic/./obj/bcutils.o ../../build/linux-arm-generic/./obj/classinitialize.o ../../build/linux-arm-generic/./obj/classcreate.o ../../build/linux-arm-generic/./obj/classload.o ../../build/linux-arm-generic/./obj/classlookup.o ../../build/linux-arm-generic/./obj/classtable.o ../../build/linux-arm-generic/./obj/classes.o ../../build/linux-arm-generic/./obj/common_exceptions.o ../../build/linux-arm-generic/./obj/cstates.o ../../build/linux-arm-generic/./obj/float_fdlibm.o ../../build/linux-arm-generic/./obj/globals.o ../../build/linux-arm-generic/./obj/globalroots.o ../../build/linux-arm-generic/./obj/jni_impl.o ../../build/linux-arm-generic/./obj/jni_util.o ../../build/linux-arm-generic/./obj/jvm.o ../../build/linux-arm-generic/./obj/loadercache.o ../../build/linux-arm-generic/./obj/localroots.o ../../build/linux-arm-generic/./obj/opcodelen.o ../../build/linux-arm-generic/./obj/opcodes.o ../../build/linux-arm-generic/./obj/packages.o ../../build/linux-arm-generic/./obj/preloader.o ../../build/linux-arm-generic/./obj/reflect.o ../../build/linux-arm-generic/./obj/stacks.o ../../build/linux-arm-generic/./obj/stackwalk.o ../../build/linux-arm-generic/./obj/stringintern.o ../../build/linux-arm-generic/./obj/typeid.o ../../build/linux-arm-generic/./obj/utils.o ../../build/linux-arm-generic/./obj/porting_debug.o ../../build/linux-arm-generic/./obj/verifyformat.o ../../build/linux-arm-generic/./obj/weakrefs.o ../../build/linux-arm-generic/./obj/Object.o ../../build/linux-arm-generic/./obj/Class.o ../../build/linux-arm-generic/./obj/ClassLoader.o ../../build/linux-arm-generic/./obj/ByteToCharISO8859_1.o ../../build/linux-arm-generic/./obj/CharToByteISO8859_1.o ../../build/linux-arm-generic/./obj/CVM.o ../../build/linux-arm-generic/./obj/DatagramPacket.o ../../build/linux-arm-generic/./obj/Finalizer.o ../../build/linux-arm-generic/./obj/Float.o ../../build/linux-arm-generic/./obj/GC.o ../../build/linux-arm-generic/./obj/Double.o ../../build/linux-arm-generic/./obj/Launcher.o ../../build/linux-arm-generic/./obj/Package.o ../../build/linux-arm-generic/./obj/Runtime.o ../../build/linux-arm-generic/./obj/Shutdown.o ../../build/linux-arm-generic/./obj/System.o ../../build/linux-arm-generic/./obj/SecurityManager.o ../../build/linux-arm-generic/./obj/TimeZone.o ../../build/linux-arm-generic/./obj/Thread.o ../../build/linux-arm-generic/./obj/Throwable.o ../../build/linux-arm-generic/./obj/StrictMath.o ../../build/linux-arm-generic/./obj/Array.o ../../build/linux-arm-generic/./obj/Field.o ../../build/linux-arm-generic/./obj/Method.o ../../build/linux-arm-generic/./obj/Proxy.o ../../build/linux-arm-generic/./obj/Constructor.o ../../build/linux-arm-generic/./obj/FileDescriptor.o ../../build/linux-arm-generic/./obj/FileInputStream.o ../../build/linux-arm-generic/./obj/FileOutputStream.o ../../build/linux-arm-generic/./obj/ObjectInputStream.o ../../build/linux-arm-generic/./obj/ObjectStreamClass.o ../../build/linux-arm-generic/./obj/ObjectOutputStream.o ../../build/linux-arm-generic/./obj/InetAddress.o ../../build/linux-arm-generic/./obj/AccessController.o ../../build/linux-arm-generic/./obj/ResourceBundle.o ../../build/linux-arm-generic/./obj/String.o ../../build/linux-arm-generic/./obj/Inflater.o ../../build/linux-arm-generic/./obj/Vector.o ../../build/linux-arm-generic/./obj/StringBuffer.o ../../build/linux-arm-generic/./obj/javaAssertions.o ../../build/linux-arm-generic/./obj/Inet4Address.o ../../build/linux-arm-generic/./obj/Inet6Address.o ../../build/linux-arm-generic/./obj/net_util.o ../../build/linux-arm-generic/./obj/CharacterData.o ../../build/linux-arm-generic/./obj/CharacterDataLatin1.o ../../build/linux-arm-generic/./obj/CRC32.o ../../build/linux-arm-generic/./obj/ZipFile.o ../../build/linux-arm-generic/./obj/ZipEntry.o ../../build/linux-arm-generic/./obj/zadler32.o ../../build/linux-arm-generic/./obj/zcrc32.o ../../build/linux-arm-generic/./obj/deflate.o ../../build/linux-arm-generic/./obj/trees.o ../../build/linux-arm-generic/./obj/zutil.o ../../build/linux-arm-generic/./obj/inflate.o ../../build/linux-arm-generic/./obj/infblock.o ../../build/linux-arm-generic/./obj/inftrees.o ../../build/linux-arm-generic/./obj/infcodes.o ../../build/linux-arm-generic/./obj/infutil.o ../../build/linux-arm-generic/./obj/inffast.o ../../build/linux-arm-generic/./obj/zip_util.o ../../build/linux-arm-generic/./obj/jitcodegen.o ../../build/linux-arm-generic/./obj/jitcodegentable.o ../../build/linux-arm-generic/./obj/jitfixup.o ../../build/linux-arm-generic/./obj/jitstackman.o ../../build/linux-arm-generic/./obj/jitopcodes.o ../../build/linux-arm-generic/./obj/jitemitter_cpu.o ../../build/linux-arm-generic/./obj/jitinit_cpu.o ../../build/linux-arm-generic/./obj/jit_risc.o ../../build/linux-arm-generic/./obj/jitemitter.o ../../build/linux-arm-generic/./obj/java_md.o ../../build/linux-arm-generic/./obj/ansi_java_md.o ../../build/linux-arm-generic/./obj/canonicalize_md.o ../../build/linux-arm-generic/./obj/posix_sync_md.o ../../build/linux-arm-generic/./obj/posix_threads_md.o ../../build/linux-arm-generic/./obj/io_md.o ../../build/linux-arm-generic/./obj/posix_io_md.o ../../build/linux-arm-generic/./obj/posix_net_md.o ../../build/linux-arm-generic/./obj/net_md.o ../../build/linux-arm-generic/./obj/time_md.o ../../build/linux-arm-generic/./obj/io_util.o ../../build/linux-arm-generic/./obj/sync_md.o ../../build/linux-arm-generic/./obj/system_md.o ../../build/linux-arm-generic/./obj/threads_md.o ../../build/linux-arm-generic/./obj/globals_md.o ../../build/linux-arm-generic/./obj/java_props_md.o ../../build/linux-arm-generic/./obj/memory_md.o ../../build/linux-arm-generic/./obj/jit_md.o ../../build/linux-arm-generic/./obj/linker_md.o ../../build/linux-arm-generic/./obj/segvhandler_arch.o ../../build/linux-arm-generic/./obj/Runtime_md.o ../../build/linux-arm-generic/./obj/UnixFileSystem_md.o ../../build/linux-arm-generic/./obj/UNIXProcess_md.o ../../build/linux-arm-generic/./obj/FileSystem_md.o ../../build/linux-arm-generic/./obj/Inet4AddressImpl_md.o ../../build/linux-arm-generic/./obj/Inet6AddressImpl_md.o ../../build/linux-arm-generic/./obj/InetAddressImplFactory.o ../../build/linux-arm-generic/./obj/NetworkInterface.o ../../build/linux-arm-generic/./obj/timezone_md.o ../../build/linux-arm-generic/./obj/PlainDatagramSocketImpl_md.o ../../build/linux-arm-generic/./obj/net_util_md.o ../../build/linux-arm-generic/./obj/executejava_standard.o ../../build/linux-arm-generic/./obj/jit_cpu.o ../../build/linux-arm-generic/./obj/ccmcodecachecopy_cpu.o ../../build/linux-arm-generic/./obj/invokeNative_arm.o ../../build/linux-arm-generic/./obj/atomic_arm.o ../../build/linux-arm-generic/./obj/flushcache_arch.o ../../build/linux-arm-generic/./obj/libromjava.a ../../build/linux-arm-generic/./obj/fdlibm.a -ldl -lpthread


现在我想使用静态链接生成目标文件,于是把最后面的"-ldl -lpthread"去掉,再加上dl.a pthread.a两个静态库,结果得到以下错误:
../../build/linux-arm-generic/./obj/linker_md.o: In function `CVMdynlinkOpen':
linker_md.c.text+0xac): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
../../build/linux-arm-generic/./obj/posix_sync_md.o: In function `POSIXmutexTryLock':
posix_sync_md.c.text+0x20): undefined reference to `pthread_mutex_trylock'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadCreate':
posix_threads_md.c.text+0x9c): undefined reference to `pthread_create'
posix_threads_md.c.text+0xd: undefined reference to `pthread_attr_setstacksize'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadInitStaticState':
posix_threads_md.c.text+0x130): undefined reference to `pthread_key_create'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadDestroyStaticState':
posix_threads_md.c.text+0x15c): undefined reference to `pthread_key_delete'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadGetSelf':
posix_threads_md.c.text+0x16c): undefined reference to `pthread_getspecific'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadAttach':
posix_threads_md.c.text+0x19: undefined reference to `pthread_setspecific'
../../build/linux-arm-generic/./obj/posix_threads_md.o: In function `POSIXthreadDetach':
posix_threads_md.c.text+0x1b: undefined reference to `pthread_setspecific'
../../build/linux-arm-generic/./obj/io_md.o: In function `CVMioClose':
io_md.c.text+0x3cc): undefined reference to `pthread_kill'
../../build/linux-arm-generic/./obj/io_md.o: In function `LINUXioDup2':
io_md.c:(.text+0x46: undefined reference to `pthread_kill'
/usr/arm-2011.03/arm-none-linux-gnueabi/libc/usr/lib/libdl.a(dlopen.o): In function `dlopen':
dlopen.c:(.text+0xc): undefined reference to `__dlopen'
/usr/arm-2011.03/arm-none-linux-gnueabi/libc/usr/lib/libdl.a(dlclose.o): In function `dlclose':
dlclose.c:(.text+0x0): undefined reference to `__dlclose'
/usr/arm-2011.03/arm-none-linux-gnueabi/libc/usr/lib/libdl.a(dlsym.o): In function `dlsym':
dlsym.c:(.text+0xc): undefined reference to `__dlsym'
/usr/arm-2011.03/arm-none-linux-gnueabi/libc/usr/lib/libdl.a(dladdr.o): In function `dladdr':
dladdr.c:(.text+0x0): undefined reference to `__dladdr'
collect2: ld returned 1 exit status

检查动态生成的的目标文件的依赖库,发现还依赖于libc.so.6,于是再补上libc.a,结果undefined的错误貌似消失了,但还是错误:
../../build/linux-arm-generic/./obj/linker_md.o: In function `CVMdynlinkOpen':
linker_md.c:(.text+0xac): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/arm-2011.03/arm-none-linux-gnueabi/libc/usr/lib/libpthread.a(sigaction.o): In function `sigaction':
sigaction.c:(.text+0x13c): multiple definition of `__sigaction'
../../build/linux-arm-generic/./obj/segvhandler_arch.o:segvhandler_arch.c:(.text+0x25: first defined here
../../build/linux-arm-generic/./obj/java_props_md.o: In function `CVMgetJavaProperties':
java_props_md.c:(.text+0x5a: warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
../../build/linux-arm-generic/./obj/Inet4AddressImpl_md.o: In function `Java_java_net_Inet4AddressImpl_getLocalHostName':
Inet4AddressImpl_md.c:(.text+0xac): warning: Using 'gethostbyaddr_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
Inet4AddressImpl_md.c:(.text+0x6: warning: Using 'gethostbyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
../../build/linux-arm-generic/./obj/posix_net_md.o: In function `POSIXnetGetProtoByName':
posix_net_md.c:(.text+0x150): warning: Using 'getprotobyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: ld returned 1 exit status
这下我没招了,跪求高手指点指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP