嵌入式Linux开发之第三方库交叉编译

编译环境:第三方库源码存放在/data/library目录下,交叉编译工具链存放在/opt/toolchain目录下!!!

--------------------交叉编译bzip2--------------------

需要直接修改Makefile文件如下:

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
AR=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar
RANLIB=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ranlib
CFLAGS=-Wall -Winline -fPIC -O2 -g $(BIGFILES) PREFIX=/data/library/bzip2-1.0.6/_install
bzip2 -1  < sample1.ref > sample1.rb2
bzip2 -2  < sample2.ref > sample2.rb2
bzip2 -3  < sample3.ref > sample3.rb2
bzip2 -d  < sample1.bz2 > sample1.tst
bzip2 -d  < sample2.bz2 > sample2.tst
bzip2 -ds < sample3.bz2 > sample3.tst

--------------------交叉编译pcre-8.44--------------------

#!/bin/sh

mkdir -p _install

CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \ 
CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \ 
LD=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld \ 
AR=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar \ 
RANLIB=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ranlib \ 
STRIP=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip \
./configure \
    --prefix=$(pwd)/_install \
    --host=arm-linux-gnueabi \
    --build=i686-pc-linux

sleep 2

make clean && make all && make install

--------------------交叉编译zlib-1.2.11--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
./configure \
    --prefix=$PWD/_install \
    --host=arm-linux-gnueabi \
    --build=i686-pc-linux

sleep 2

make clean && make all && make install

--------------------交叉编译lighttpd-1.4.54--------------------

注意:lighttpd依赖bzip2、pcre、zlib库

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \  
LD=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ld \ 
AR=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar \ 
RANLIB=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ranlib \ 
STRIP=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip \
PCRECONFIG=/data/library/pcre-8.44/_install/bin/pcre-config \
LIBS="-L/data/library/pcre-8.44/_install/lib -L/data/library/zlib-1.2.11/_install/lib -L/data/library/bzip2-1.0.6/_install/lib" \
CFLAGS="$CFLAGS -fPIC -DHAVE_PCRE_H=1 -DHAVE_LIBPCRE=1 -I/data/library/pcre-8.44/_install/include -I/data/library/zlib-1.2.11/_install/include -I/data/library/bzip2-1.0.6/_install/include" \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --build=i686-pc-linux --enable-shared

sleep 2

make clean && make all && make install

--------------------交叉编译openssl-1.1.1f--------------------

#!/bin/sh

mkdir -p _install

./Configure --prefix=$(pwd)/_install linux-generic32 shared no-asm no-async CROSS_COMPILE=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- CC=gcc

sleep 2

make clean && make all && make install

-------------------交叉编译libevent-2.1.12----------------------

注意:libevent依赖openssl库

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
LDFLAGS="-L/data/library/openssl-1.1.1f/_install/lib" CFLAGS="-I/data/library/openssl-1.1.1f/_install/include" \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --build=i686-pc-linux

sleep 2

make clean && make all && make install

--------------------交叉编译libev-4.33--------------------

#!/bin/sh

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
./configure --prefix=$(pwd)/__install --host=arm-linux-gnueabihf --build=i686-pc-linux

sleep 2

make clean && make all && make install

--------------------交叉编译opencv_3.4.14--------------------

注意:opencv_contrib一定要与opencv版本对应!

#!/bin/sh
 
mkdir -p _install
 
mkdir -p build_arm
 
cd build_arm
 
echo "----- Setting up compilation"
 
cmake -DCMAKE_BUILD_TYPE=RELEASE \
	-DCMAKE_INSTALL_PREFIX=/data/library/opencv_3.4.14/_install \
	-DOPENCV_EXTRA_MODULES_PATH=/data/library/opencv_3.4.14/opencv_contrib/modules \
	-DMAKE_C_COMPILER=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc \
	-DMAKE_CXX_COMPILER=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ \
	-DBUILD_SHARED_LIBS=ON ..
 
echo "----- Starting compilation"
 
make clean && make -j4 && make install
 
echo "----- OpenCV correctly built"

--------------------交叉编译x264--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc \
./configure \
	--prefix=$(pwd)/_install \
	--host=arm-linux-gnueabi \
	--cross-prefix=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- \
	--enable-static \
	--enable-shared \
	--disable-asm 

sleep 2

make clean && make -j4 && make install

--------------------交叉编译ffmpeg_4.2.4--------------------

#!/bin/sh
 
mkdir -p _install
 
CC=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc \
./configure \
    --prefix=$(pwd)/_install \
    --cross-prefix=/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- \
    --target-os=linux \
    --arch=arm \
    --disable-asm \
    --enable-ffmpeg \
    --disable-ffplay \
    --enable-pthreads \
    --enable-cross-compile \
    --enable-gpl \
    --enable-shared \
    --enable-libx264 \
    --extra-cflags=-I/data/library/x264_2021.06.09/_install/include \
    --extra-ldflags=-L/data/library/x264_2021.06.09/_install/lib
 
sleep 2
 
make clean && make -j4 && make install

--------------------交叉编译curl-7.73.0--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf 

sleep 2

make clean && make all && make install

--------------------交叉编译curl-7.74.0--------------------

依赖于openssl所以需要先编译完openssl并加入资源路径

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --enable-static --with-ssl=/data/library/openssl-1.1.1f/_install 

sleep 2

make clean && make all && make install

--------------------交叉编译apr-1.7.0--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ap_void_ptr_lt_long=no

sleep 2

make clean && make all && make install

--------------------交叉编译expat-2.2.10--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --without-docbook

sleep 2

make clean && make all && make install

--------------------交叉编译apr-util-1.6.1--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
CXX=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --with-apr=/data/library/apr-1.7.0/_install --with-expat=/data/library/expat-2.2.10/_install

sleep 2

make clean && make all && make install

--------------------交叉编译mxml-3.2--------------------

#!/bin/sh

mkdir -p _install

CC=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
./configure --prefix=$(pwd)/_install --host=arm-linux-gnueabihf --build=i686-pc-linux

sleep 2

make clean && make all && make install

--------------------交叉编译OSS C SDK--------------------

#!/bin/sh

mkdir -p _install

mkdir -p build_arm

cd build_arm

cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/data/library/aliyun-oss-c-sdk-master/_install/ \
    -DCMAKE_C_COMPILER=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
    -DCMAKE_CXX_COMPILER=/opt/toolchain/gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
    -DCURL_INCLUDE_DIR=/data/library/curl-7.73.0/_install/include/ \
    -DCURL_LIBRARY=/data/library/curl-7.73.0/_install/lib/libcurl.a \
    -DAPR_INCLUDE_DIR=/data/library/apr-1.7.0/_install/include/apr-1/ \
    -DAPR_LIBRARY=/data/library/apr-1.7.0/_install/lib/libapr-1.a \
    -DAPR_UTIL_INCLUDE_DIR=/data/library/apr-util-1.6.1/_install/include/apr-1 \
    -DAPR_UTIL_LIBRARY=/data/library/apr-util-1.6.1/_install/lib/libaprutil-1.a \
    -DMINIXML_INCLUDE_DIR=/data/library/mxml-2.12/_install/include/ \
    -DMINIXML_LIBRARY=/data/library/mxml-2.12/_install/lib/libmxml.a ..

sleep 2

make clean && make all && make install

--------------------交叉编译glib--------------------

glib交叉编译依赖于libffi和zlib

mkdir _install

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
嵌入系统是一种嵌入到其他设备中的计算机系统,通常用于控制和监视设备。而Linux是一种开源的操作系统,可以被用于嵌入系统中。在嵌入系统中,由于硬件资源有限,因此需要特别定制的Linux内核和用户空间软件。 为了在嵌入系统中开发和调试应用程序,需要在主机上搭建一个交叉编译环境。交叉编译环境是指在一种操作系统上编译生成另一种操作系统的程序和。在嵌入系统中,需要将应用程序和编译嵌入系统所支持的指令集和操作系统,因此需要搭建一个交叉编译环境。 实验原理: 在嵌入系统中,需要编译生成可在目标硬件平台上运行的程序和。由于目标硬件平台和主机硬件平台不同,因此需要使用交叉编译器来编译生成。 在本实验中,我们需要在主机上搭建一个交叉编译环境,并使用该环境来编译生成嵌入系统中的应用程序和。具体实验步骤如下: 1. 下载交叉编译器工具链 交叉编译器工具链是一系列的编译器、链接器、和头文件,用于在主机上编译生成嵌入系统中的应用程序和。可以从嵌入系统提供商或第三方网站下载所需的交叉编译器工具链。 2. 安装交叉编译器工具链 将下载的交叉编译器工具链解压缩到主机的某个目录下,并添加到环境变量中。这样,在命令行中就可以使用交叉编译器工具链来编译生成嵌入系统中的应用程序和。 3. 编写并编译应用程序 使用交叉编译器工具链编写并编译生成嵌入系统中的应用程序。编译时需要注意指定编译器、链接器和的路径。 4. 将应用程序拷贝到嵌入系统中 将编译生成的应用程序拷贝到嵌入系统中,并在嵌入系统中运行测试。 总之,通过搭建交叉编译环境,可以在主机上编译生成嵌入系统中的应用程序和,提高开发和调试效率。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值