我配置了Webports ffmpeg;并且为当前项目创建了以下Makefile。但是,我遇到了ffmpeg库链接的一些问题。在PPAPI中使用FFMPEG库:使用FFmpeg的Naclports
$ TOOLCHAIN=pnacl make
LINK pnacl/Release/client_unstripped.bc
pnacl/Release/src/client.o: error: undefined reference to 'av_register_all'
make: *** [pnacl/Release/client_unstripped.bc] Error 1
你能告诉我什么,我做错了,我的Makefile如下所示:
VALID_TOOLCHAINS:= pnacl的glibc铛-newlib赢得
NACL_SDK_ROOT = $(ABSPATH $? (CURDIR)/../ ..)
TARGET =客户端
OTHERDIR = SRC
INC_DIR = INC
FFMPEG_INC_DIR = ../../toolchain/mac_pnacl/le32-nacl/usr/include
INCLUDES = -I $(INC_DIR)-I $(FFMPEG_INC_DIR)
包括$(NACL_SDK_ROOT)/tools/common.mk
CHROME_ARGS + = --allow-NaCl的插座-API =本地主机
LIBS = nacl_io ppapi_cpp PPAPI
CFLAGS = -Wall -g -O2 $(INCLUDES) -L ../../ toolchain/mac_pnacl/le32-nacl/usr/lib -lavformat \ -lvpx -lvorbisenc -lvorbis -logg -ltheoraenc -ltheoradec -logg -lmp3lame -lm -pthread -lavcodec -lvpx -lvorbisenc -lvorbis -logg \ -ltheoraenc -ltheoradec -logg -lmp3lame -lm -pthread -lswresample -lm -lavutil -lm -lavdevice -lavfilter
SOURCES = $(OTHERDIR)/tcp_util.cc $(OTHERDIR)/tpool.cc $(OTHERDIR)/net.cc $(OTHERDIR)/rtsp_response.cc \ $(OTHERDIR)/rtsp.cc $(OTHERDIR)/ rtsp_common。 cc \ $(OTHERDIR)/rtsp_client.cc $(OTHERDIR)/udp_util.cc \ $(OTHERDIR)/client.cc
个从common.mk由宏生成#生成规则:
$(SRC的foreach,$(源),$($的eval(呼叫 COMPILE_RULE,$(SRC),$(CFLAGS))))
012a#PNaCl工作流程同时使用未剥离和已完成/已剥离的二进制文件。 #在NaCl上,只为释放配置(不是调试)生成一个剥离的二进制文件。 ifneq(,$(或$(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG))))$(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES)) $(LIBS),$(DEPS)))$(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))else $(eval $(call LINK_RULE,$(TARGET),$(SOURCES ),$(LIBS),$(DEPS)))ENDIF
$(EVAL $(叫NMF_RULE,$(TARGET),))
这里是这样,库得如何在类上下文中使用。
class VideoDecodePack {
public:
VideoDecodePack() {
av_register_all();
}
};
class ClientInstance : public pp::Instance {
public:
explicit ClientInstance(PP_Instance instance) : pp::Instance(instance){
cses = InitRtspClientSession();
_videoDecoder = new VideoDecodePack();
}
...