如何在没有版本后缀

时间:2016-04-28 10:30:10

标签: android ffmpeg shared-libraries

有没有办法可以配置为没有版本号后缀的android构建ffmpeg共享库?我能够使用不同的选项进行构建,但始终可以获得" libavcodec.so.57和#34;等文件。我需要没有后缀的库,如" libavcodec.so"。我认为选项" - 禁用 - symver"会做的伎俩但不幸的是它没有。问题是我有一个库(.so文件)依赖于没有后缀的ffmpeg共享库,因此无法加载那些即将构建的库。 我主要遵循了here的说明。

2 个答案:

答案 0 :(得分:7)

提问总是找到答案。这就是我成功的原因,深入研究了make文件。执行以下操作:

  • 运行您的配置
  • 找到" 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 =

  • run" make"或" make -j $(nproc)"

  • " make install"

现在你将拥有没有后缀的共享库 你可以检查他们的依赖关系 " readelf -d somefile.so"

答案 1 :(得分:3)

无需更改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