关于移植qemu的一些想法吧

 

     在移植qemu的时候,遇到了很多error和warning,error当然是解决的对象了,潜在的危机就是warning了(因为warning总是被忽略)。

     我遇到的一个主要的warning如下:

 

i686-linux-android-gcc: warning: ../disas/arm.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../disas/i386.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../hw/irq.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../hw/qdev-properties.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../hw/qdev.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../qemu-log.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../qom/container.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../qom/cpu.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../qom/object.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../qom/qom-qobject.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: ../tcg-runtime.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: cpu-exec.o: linker input file unused because linking not done
i686-linux-android-gcc: warning: disas.o: linker input file unused because linking not done


 

上面warning导致生成的最终文件是属性是:

robin@ubuntu:~/bbbbb/bin$ file libqemu-arm.so 
libqemu-arm.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

 

文件的链接属性是:

robin@ubuntu:~/bbbbb/bin$ ldd libqemu-arm.so 
 statically linked

 

    由于那个warning或者说生成的文件的属性吧,该文件不能够正常运行,说是找不到依赖的系统库(就连起码的libc.so也找不到)。

    说了半天的问题了,说说解决的方法吧————一句话,先解决点那个warning。

解决问题的宗旨:

1.让程序给我们服务————我们需要什么服务,就写什么程序。

2.检测程序是否为我们正确服务————程序结果是在电脑上体现的,如果不是我们预测的结果,就要查看程序运行的 log,在 log 中查找具体错误原因,根据原因改自己的程序。(log 是解决一切问题的入口点)

就拿我遇到的这个问题来说吧,我查找log,发现在pixman的confingure中,有很多检测设置static/shared的选项,程序起初默认是static的,而禁止了shared选项。  我就修改congfigure文件,为程序设置其为shared的,最终问题就顺利解决了。还是一句话,查找log,找出错误,分析原因,修改程序,解决错误。

 

你可能感兴趣的:(关于移植qemu的一些想法吧)