因为项目需要使用MP4Box给视频文件加hint,所以需要在在64位SUSE Linux下编译gpac。
原来在32位系统上./configure make 没啥问题,结果早上换了个64位的机器死活编译不过,报如下错误:
s.opic -lm -L/usr/local/lib -lz -ljpeg -lpthread -ldl
/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: /usr/local/lib/libz.a(gzio.o): relocation R_X86_64_32 against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libz.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [libgpac.so] Error 1
make[1]: Leaving directory `/root/mayl/bin/gpac/src’
make: *** [lib] Error 2
xmidc_dm_nrc1:~/mayl/bin/gpac #
经过多次试验排错,发现链接的时候使用了32位的libz去链接,导致函数地址找不到,链接不成功。
后修改src/Makefile底下的
EXTRALIBS+=-L$(prefix)/lib
改成
EXTRALIBS+=-L$(prefix)/lib64后解决。
PS:
GPAC 是一个为科研和学术领域开发的多媒体的框架,支持 MPEG-4, VRML, X3D, SVG, LASeR 等
GPAC 包括一个多媒体播放器 Osmo4 以及多媒体打包工具 MP4Box
GPAC is cross-platform. It is written in (almost 100% ANSI) C for portability reasons (embedded platforms and DSPs), attempting to keep the memory footprint as low as possible. It is currently running under Windows, Linux, WindowsCE (SmartPhone, PocketPC 2002/2003), Embedded Linux (familiar 8, GPE) and recent SymbianOS systems.