Android libpng-1.6.37交叉编译

生成soname取消版本信息

  1. 编译脚本
#libpng
export ANDROID_NDK_HOME=/Users/xxx/Library/Android/android-ndk-r21b
PLATFORM=$ANDROID_NDK_HOME/platforms/android-26/arch-arm/
PREBUILT=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt
PREFIX=$YTXPLAYER_PATH/android/contrib/jni/jniLibs
TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64

echo $PREFIX
     
CFLAGS="-fpic -DANDROID -ffunction-sections -msoft-float -lm"

CROSS_COMPILE=$PREBUILT/darwin-x86_64/bin/armv7a-linux-androideabi26-
LDFLAGS=-L${PREFIX}/lib
export CXX="${CROSS_COMPILE}clang++ --sysroot=${TOOLCHAIN}/sysroot"
export CC="${CROSS_COMPILE}clang --sysroot=${TOOLCHAIN}/sysroot"
export NM="${PREBUILT}/darwin-x86_64/bin/arm-linux-androideabi-nm"
export STRIP="$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-strip"
export RANLIB="$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-ranlib"
export AR="$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-ar"
export LD="$PREBUILT/darwin-x86_64/bin/arm-linux-androideabi-ld"

./configure --prefix=$PREFIX \
--host=arm-linux \

make
make install

应为libpng的编译是由makefile先生成libtool工具所需要lo、la为后缀的文件,在通过libtool工具编译代码的所以要先修改Makefile.in, 添加-avoid-version来取消soname的版本控制,diff如下:

--- Makefile.in 2019-04-15 02:10:32.000000000 +0800
+++ ../../libpng-1.6.37/Makefile.in 2020-12-07 18:36:47.000000000 +0800
@@ -771,8 +771,7 @@
    $(am__append_4) $(am__append_5)
 nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h
 libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined \
-   -export-dynamic -version-number \
-   @PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 \
+   -export-dynamic -avoid-version \
    $(am__append_6) $(am__append_7) $(am__append_8)
 @HAVE_LD_VERSION_SCRIPT_FALSE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym
 @HAVE_LD_VERSION_SCRIPT_TRUE@libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.vers

参考网站:
https://my.oschina.net/xgcode/blog/3022214

你可能感兴趣的:(Android libpng-1.6.37交叉编译)