ARM-LINUX交叉编译集合

一、ffmpeg 移植安装

​ ubuntu下简易安装(默认最新版本,其它版本及移植往下看):

sudo apt-get install ffmpeg

​ ffmpeg源码安装及移植需要提前安装x264。

1.1 x264基于X86平台安装

  • 1) 下载;

  • 2) 解压;

  • 3) 进入源码根目录,输入以下命令:

    ./configure --prefix=/usr/local/x264 --enable-shared --enable-pic --enable-static --disable-asm
    make 
    make install
    

1.2 x264基于ARM平台安装

​ 安装之前请确保之前安装过的X264及ffmpeg卸载完毕;

  • 1) 下载;

  • 2) 解压;

  • 3) 进入源码根目录,输入以下命令:

    ./configure --enable-shared --prefix=/home/mint/Downloads/ffmpeg/_x264_install/ --host=arm-linux-gnueabihf --disable-asm
    # 注:--prefix 为路径选择,这里需要记下来,选择自己的路径 --host 交叉编译器,根据自己的交叉编译器选择 --disable-asm禁止汇编,如果安装汇编编译器可以不配置
    
  • 4)修改配置文件config.mak,主要做以下修改:

SYS_ARCH=ARM
SYS=LINUX
CC= arm-linux-gnueabihf-gcc
LD=arm-linux-gnueabihf-gcc -o
AR= arm-linux-gnueabihf-ar rc
RANLIB= arm-linux-gnueabihf-ranlib
```

  • 5) 安装:

    make
    make install
    

1.3 ffmpeg基于X86平台安装

  • 下载

  • 解压

  • 进入源码根目录,输入一下配置命令:

    ./configure --enable-shared --disable-yasm
    make
    make install
    

1.4 ffmpeg基于ARM平台安装

  • 下载

  • 解压

  • 进入源码根目录,输入一下配置命令:

    ./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/mint/Downloads/ffmpeg/_ffmpeg_install --enable-shared --disable-static --enable-gpl --enable-nonfree --disable-ffplay --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm --disable-stripping --enable-libx264 --extra-cflags=-I/home/mint/Downloads/ffmpeg/_x264_install/include --extra-ldflags=-L/home/mint/Downloads/ffmpeg/_x264_install/lib --extra-libs=-ldl
    # 注:--cross-prefix:交叉编译器选择 --target-os: 系统环境 --cc:C库编译器,这里用的gcc交叉编译器 --arch:芯片架构 --prefix:安装路径,记着 --extra-cflags:x264头文件路径,和arm安装方式的x264路径一致 --extra-ldflags:x264库文件路径,和arm安装方式的x264路径一致
    # 如果出现错误:relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC ,在./configure中添加--extra-cflags=-fPIC
    make
    make install
    

1.5 移植

​ 移植库文件即可,移植文件在刚刚x264和ffmpeg安装路径的lib文件夹下,copy所有的.so文件,到文件系统的/lib下(.so文件时Linux系统的dll文件)。

​ 另外,移植ffmpeg安装路径下的bin文件夹的ffmpeg文件到文件系统的/bin文件夹。

二、OpenCV 移植安装

​ OpenCV移植需要大量的依赖库:libz,libjpeg,libpng,yasm,libx264,libxvid,ffmpeg等等,这些放在源码根目录的3rdparty文件夹中,一个个编译不太现实,所以借助第三方工具cmake-gui;

2.1 cmake-gui安装

这个工具版本很随意,不需要最新的,直接安装就行,ubuntu下安装指令:

sudo apt install cmake cmake-qt-gui cmake-curses-gui

2.2 cmake-gui配置

创建build 、 install 文件夹,作为存放编译文件和安装目录,这里建议这么做,如果配置错可以直接删build,重新配置;

步骤如下:
ARM-LINUX交叉编译集合_第1张图片ARM-LINUX交叉编译集合_第2张图片
ARM-LINUX交叉编译集合_第3张图片
ARM-LINUX交叉编译集合_第4张图片
ARM-LINUX交叉编译集合_第5张图片
-lpthread -lrt -ldl
ARM-LINUX交叉编译集合_第6张图片
ARM-LINUX交叉编译集合_第7张图片

  • 源码目录下 3rdparty/protobuf/src/google/protobuf/stubs/common.cc 文件在include前添加定义:#define HAVE_PTHREAD

  • 之后进行编译安装:

make -j8
make install
  • 最后将安装目录下的lib文件夹的所有库移植到开发板根目录的lib下;

boost库移植

下载:https://www.boost.org/

交叉编译安装:

./bootstrap.sh --prefix=/home/mint/Downloads/boost/
./b2
./b2 install
# 注:当结果最后出现failed没关系,只要需要的编译安装没问题就可以。
各种安装atomic,chrono,container,context,contract,coroutine,date_time,exception,fiber,filesystem,graph,graph_parallel, headers,iostreams,json,locale,log,math,mpi,nowide,program_options,python,random,regex,serialization,stacktrace,system,test,thread,timer,type_erasure,wave

jsoncpp库移植

下载

lusb移植

下载

libxml2库移植

下载:

老版本 | 新版本

# version:2.7.2 
./configure CROSS_COMPILE=arm-linux-gnueabihf- --host=arm-linux-gnueabihf --prefix=/home/mint/libxml2.4.30 -with-python=no
# version 2.9.12
./configure --prefix=/home/ubuntu/libxml2-2.9.12 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++

glibc库移植

下载 | 教程

udev

下载 | 中文手册

eudev

下载

你可能感兴趣的:(Linux,学习,#,Linux,文件系统,linux,arm,ubuntu,交叉编译)