生成soname取消版本信息
- 编译脚本
#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
网友评论