阅读更多
因为项目需要使用MP4Box给视频文件加hint,所以需要在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后解决。
具体的出处请参考如下链接
http://www.howtoforge.com/forums/archive/index.php/t-4276.html