2016-04-28 99 views
4

有没有一种方法可以配置为无需版本号后缀的android构建ffmpeg共享库?即时通讯能够建立不同的选项,但总是得到像“libavcodec.so.57”的文件。我需要没有后缀的库,比如“libavcodec.so”。我认为选项“--disable-symver”会做的伎俩,但不幸的是它没有。问题是我有一个库(.so文件),依赖ffmpeg共享库没有后缀,因此无法加载那些即时通讯构建。 我主要关注指示here如何构建不带版本号后缀的ffmpeg共享库

回答

5

问问题导致总是找到答案。这就是为什么我成功了,挖掘了帮助制作文件。做到以下几点:

  • 运行配置
  • 发现 “config.mak”
  • 变化

    SLIBNAME_WITH_VERSION = $(SLIBNAME)$(中的libversion) SLIBNAME_WITH_MAJOR = $(SLIBNAME)。 $(LIBMAJOR)

    到:

    SLIBNAME_WITH_VERSION = $(SLIBNAME)
    SLIBNAME_WITH_MAJOR = $(SLIBNAME)

  • 变化

    SLIB_INSTALL_NAME = $(SLIBNAME_WITH_VERSION) SLIB_INSTALL_LINKS = $(SLIBNAME_WITH_MAJOR)$(SLIBNAME)

    到:

    SLIB_INSTALL_NAME = $(SLIBNAME )
    SLIB_INSTALL_LINKS =

  • 运行“make”或“make -j $(nproc )”

  • “使安装”

你现在应该已经共享库没有后缀。
您可以通过 “readelf -d somefile.so”

1

无需检查他们的依赖关系,config.mak改变

只需添加--target-OS = Android的配置呼叫

我的例子

NDK=${HOME}/android-sdk-linux/ndk-bundle 
ABI=arm 

./configure \ 
    --arch=$ABI \ 
    --target-os=android \ 
    --disable-everything \ 
    --disable-symver \ 
    --enable-runtime-cpudetect \ 
    --enable-pic \ 
    --enable-shared \ 
    --disable-static \ 
    --prefix=../build/$ABI \ 
    --cross-prefix=$NDK/toolchains/$ABI-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/$ABI-linux-androideabi- \ 
    --sysroot=$NDK/platforms/android-26/arch-$ABI \ 
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -fPIC -DANDROID" \ 
    --extra-ldflags="" \ 
    || exit 1 

    make clean 
    make -j4 || exit 1 
    make install || exit 1 
+0

这是一个很好的答案。无需维护补丁。根本没有为target-os = android生成版本号 –