想把dvsdk encode代码和jrtplib联系起来,但是dvsdk是C语言,jrtplib是C++的,所以不修改Makefile就会出现错误
expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’
这是因为用gcc或者arm-linux-gcc编译了c++的程序
怎样修改encode代码中的交叉编译器呢?
解决:
打开encode下的Makefile找到编译器的地方
C_FLAGS += -Wall -g
LD_FLAGS += -lpthread -lpng -ljpeg -lfreetype -lasound -ljrtp
COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)g++ $(C_FLAGS) $(CPP_FLAGS) -c
LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)g++ $(LD_FLAGS)
修改成如下:
C_FLAGS += -Wall -g
#change by zjk
LD_FLAGS += -lpthread -lpng -ljpeg -lfreetype -lasound -ljrtp //这里添加jrtplib的静态链接库
#change by zjk
COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)g++ $(C_FLAGS) $(CPP_FLAGS) -c //编译的地方修改成g++
LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)g++ $(LD_FLAGS) //连接的地方修改成g++
Makefile中变量很多,看起来很复杂的样子,但是细细读起来发现只是代换变量挺麻烦的,条理还是很明确的