Linux下ffmpeg的基本编译
Linux下编译:
1、源码下载地址:http://ffmpeg.org/download.html
2、将源码包上传到Linux编译服务器上并解压出来:
3、创建编译路径:mkdir /home/compile_ffmpeg 并将ffmpeg源码压缩包复制进去
4、解压源码包:tar xvf ffmpeg-snapshot.tar.bz2
5、创建编译库文件路径:mkdir /home/build
6、进入ffmpeg目录执行命令:
./configure --prefix=/home/compile_ffmpeg/build/ --enable-static --enable-shared
(configure文件生成makefile文件,–prefix=指定安装路径 ,–enable-static --enable-shared 编译生成静态库和动态库,如果提示没有依赖库需要安装下,或者–disable-xxx 设置不参与编译)
在当前路径下执行编译命令 : make
编译完成后执行安装目录:make install
7、编译安装完成后进入指定的输出路径:/home/compile_ffmpeg/build/
bin路径下是生成的可执行文件:
lib路径下是静态库和动态库文件:
这样就编译完成了
8、可以执行命令查看ffmpeg版本:./ffmpeg -version
会出现错误,ldd ffmpeg 发现依赖库路径
在当前终端上设置下环境变量:export LD_LIBRARY_PATH=/home/compile_ffmpeg/build/lib/
这样在执行:./ffmpeg -version 就可以使用了
也可以将动态库目录设置到系统环境变量中,或者在编译的时候不生成动态库,直接生成静态库方式,这样编译出来就不依赖动态库了,可以直接使用
执行命令:
make clean
./configure --prefix=/home/compile_ffmpeg/build/ --enable-static --disable-shared
make
make install
编译完成后再ldd ffmpeg就不会有编译出来的链接库依赖了
静态链接顺序:
方法1:
cmake_minimum_required(VERSION 3.8)
project(test_sei)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/)
target_link_libraries(${PROJECT_NAME}
-Wl,--start-group
libavutil.a
libswscale.a
libswresample.a
libavcodec.a
libavformat.a
libavfilter.a
libavdevice.a
-Wl,--end-group
pthread
)
方法2:
cmake_minimum_required(VERSION 3.8)
project(test_sei)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib/)
target_link_libraries(${PROJECT_NAME}
libavdevice.a
libavfilter.a
libavformat.a
libavcodec.a
libswresample.a
libswscale.a
libavutil.a
pthread
)