OpenWrt编译问题记录

错误一、config.status: error: cannot find input file: `xmetadataretriever/Makefile.in'

configure: creating ./config.status
config.status: creating Makefile
config.status: error: cannot find input file: `xmetadataretriever/Makefile.in'
Makefile:648: recipe for target '/mnt/hdd_6t/liuxueneng/releaseH3/h3_tina/out/h3-p1nor/compile_dir/target/libcedarx/.configured_yyy' failed
make[3]: *** [/mnt/hdd_6t/liuxueneng/releaseH3/h3_tina/out/h3-p1nor/compile_dir/target/libcedarx/.configured_yyy] Error 1
make[3]: Leaving directory '/mnt/hdd_6t/liuxueneng/releaseH3/h3_tina/package/allwinner/tina_multimedia'
package/Makefile:192: recipe for target 'package/allwinner/tina_multimedia/compile' failed
make[2]: *** [package/allwinner/tina_multimedia/compile] Error 2
make[2]: Leaving directory '/mnt/hdd_6t/liuxueneng/releaseH3/h3_tina'

原因:Autoconf配置生成Makefile.in需要Makefile.am,如果Makefile.am出现错误(格式,语法)则会出现该错误,

出问题的Makefile.am不一定是xmetadataretriever/Makefile.am

config.status: error: cannot find input file: `xmetadataretriever/Makefile.in'

此次出问题的Makefile.am是demoH264Player

include $(top_srcdir)/Makefile.inc

bin_PROGRAMS = demoH264Player

demoH264Player_SOURCES =  ./demoH264Player.cpp \
./h264FileRead.c \ demoH264Player_CFLAGS = $(CFLAGS_CDXG)
demoH264Player_CPPFLAGS = $(CPPFLAGS_CDXG)

SOURCES 文件列表的时候最后一个文件的换行符连接符需要去掉,改成如下

demoH264Player_SOURCES =  ./demoH264Player.cpp \
./h264FileRead.c

不过在Android.mk里面如果最后跟一个空行这样子是可以正常编译的。

问题二 error: expression cannot be used as a function

typedef定义的函数类型已经是一个指针类型,如果再增加指针方式定义函数,调用的时候会出现如上报错。

PlayerCallback *mMediaPlayStatusCB; 
然后使用

mMediaPlayStatusCB(....);

则会出现如上错误,正确定义如下:

PlayerCallback mMediaPlayStatusCB; 

错误三、will be initialized after [-Wreorder]

类构造函数的成员初始化列表必须按照成员申明的书序初始化

错误四、invalid use of non stactic member function

类成员函数设置成回调必须是静态函数。

上一篇:Vmware 8.00 文件共享ubuntu


下一篇:perl的INC