Linux下ffmpeg的基本编译

Linux下ffmpeg的基本编译

Linux下编译:

1、源码下载地址:http://ffmpeg.org/download.html
Linux下ffmpeg的基本编译_第1张图片
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路径下是静态库和动态库文件:
Linux下ffmpeg的基本编译_第2张图片
这样就编译完成了

8、可以执行命令查看ffmpeg版本:./ffmpeg -version

会出现错误,ldd ffmpeg 发现依赖库路径
Linux下ffmpeg的基本编译_第3张图片
在当前终端上设置下环境变量:export LD_LIBRARY_PATH=/home/compile_ffmpeg/build/lib/

这样在执行:./ffmpeg -version 就可以使用了
Linux下ffmpeg的基本编译_第4张图片
也可以将动态库目录设置到系统环境变量中,或者在编译的时候不生成动态库,直接生成静态库方式,这样编译出来就不依赖动态库了,可以直接使用

执行命令:

make clean

./configure --prefix=/home/compile_ffmpeg/build/ --enable-static --disable-shared

make

make install

编译完成后再ldd ffmpeg就不会有编译出来的链接库依赖了
Linux下ffmpeg的基本编译_第5张图片

静态链接顺序:
方法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
)

你可能感兴趣的:(linux,ffmpeg)