我在linux下编译了一个小模块,没有报错,能运行编译结果
但是我交叉编译时,报了下面的错误:invalid 'asm': invalid operand for code 'w',我看了源代码,源代码中并没有 'W',这个怎么解决,是什么问题,请高手赐教........

解决方案 »

  1.   

    你编译的目标是ARM体系结构的么?
      

  2.   

    是的,我在网上搜到了两个解决办法,但是不会操作,也不知道能不能解决
    a.在XXX文件中INCLUDEPATH不要含任何路径(好像很难做到哦);
    b.重新实现这些函数,我是这种方法解决这个问题的。
      

  3.   

    发现调用ntohll函数出错,类似的函数还有ntohl、ntohs、htonl、htons等,
    研究n久终于研究明白,原来这些函数只是一个宏定义,在arm环境下找到对应的实现所致网上有人这么说.....
      

  4.   


    这就很好理解了呀
    你真的有自己写ntohll的实现吗
      

  5.   

    是的,全是C的,是用到socket的一些接口。
      

  6.   

    我详细点说吧:
    大家如果有android的源码,在android/external/ppp/pppd/plugins/rp-pppoe会有一些源码
    我就是编译这些源码,我稍微修改了一下,在linux下用Makefile编译生成了a.out,运行ok。
    我想把这个功能添加到镜像中去,自己写了一个Android.mk,然后到android/下make,
    就出现了这个报错:
    invalid 'asm': invalid operand for code 'w'
    还有很多很多的宏重定义警告
    warning: "_POSIX_TIMERS" redefined
    warning: "_POSIX_REALTIME_SIGNALS" redefined
    等等,这些警告一屏一屏的刷......
    各位看官,大虾,怎么办啊.....