有没有办法可以配置为没有版本号后缀的android构建ffmpeg共享库?我能够使用不同的选项进行构建,但始终可以获得" libavcodec.so.57和#34;等文件。我需要没有后缀的库,如" libavcodec.so"。我认为选项" - 禁用 - symver"会做的伎俩但不幸的是它没有。问题是我有一个库(.so文件)依赖于没有后缀的ffmpeg共享库,因此无法加载那些即将构建的库。 我主要遵循了here的说明。
答案 0 :(得分:7)
提问总是找到答案。这就是我成功的原因,深入研究了make文件。执行以下操作:
变化
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