问题:此警告的含义是什么?如果没有现实生活中的后果,我可以忍受一段时间。。。但我担心如果我们的程序加载到一个有故障的芯片上会发生什么。
背景:使用NDK r8c,X264编码器的链接会发出警告:
cannot scan executable section 1 of libx264.a(dct-a.o) for Cortex-A8 erratum because it has no mapping symbols
。。。对libx264中的所有程序集文件发出相同警告。
libx264.a本身是在同一台机器上使用取自NDK的相同4.6工具链进行交叉编译的。
以下是容易重现问题的说明(Ubuntu或MacOS):
从下载x264-snapshot-20121203-2245ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
运行
./configure --enable-pic --enable-strip --enable-static --cross-prefix=~/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi- --sysroot=~/android-ndk-r8c/platforms/android-14/arch-arm --host=arm-linux
运行
~/android-ndk-r8c/prebuilt/linux-x86/bin/make
它将构建静态库,然后在链接x265可执行文件时显示Cortex-A8警告。我并不担心编译器的警告,因为构建libx264.a是离线完成的,它不是我们官方日常构建的一部分。
我已将此报告为http://code.google.com/p/android/issues/detail?id=40794.
我试图按照ARM.com的说明手动将映射符号添加到dct-a.S
,但没有效果。
我从Andrew那里得到了答案:http://code.google.com/p/android/issues/detail?id=40794#c4
tl;nr:h264 makefile强制剥离映射符号我仔细检查了一下:这不是我的--enable-strip
对./configure
造成的。
最快的解决方法是运行
make STRIP=