交叉编译环境配置(arm)

1.拿到对应厂商给的交叉包,如:

arm-rockchip830-linux-uclibcgnueabihf.tar.xz

2.上传到对应的服务器上(x86的centos或者ubuntu都可以),解压到目录

3.配置环境变量

在交叉包arm-rockchip830-linux-uclibcgnueabihf的下边,有一个脚本env_install_toolchain.sh,直接执行即可配置成功,可/root/.bash_profile中查看

[root@localhost ~]# cat /root/.bash_profile 
# .bash_profile

export PATH
export PATH=/data/tools/arm-rockchip830-linux-uclibcgnueabihf/bin:$PATH

4.交叉编译iperf3

步骤一:下载iperf3源码

wget https://github.com/esnet/iperf/archive/refs/tags/3.9.tar.gz
tar -xzf 3.9.tar.gz
cd iperf-3.9

步骤二:配置环境变量
设置交叉编译工具链的路径和前缀。假设你的工具链在/usr/local/arm-rockchip830-linux-uclibcgnueabihf/路径下。

export PATH=/usr/local/arm-rockchip830-linux-uclibcgnueabihf/bin:$PATH
export CROSS_COMPILE=arm-rockchip830-linux-uclibcgnueabihf-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export AS=${CROSS_COMPILE}as
export LD=${CROSS_COMPILE}ld
export NM=${CROSS_COMPILE}nm
export OBJCOPY=${CROSS_COMPILE}objcopy
export OBJDUMP=${CROSS_COMPILE}objdump
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip

步骤三:运行配置脚本
配置脚本需要知道你正在使用的交叉编译工具链。你需要告诉配置脚本使用交叉编译,并指定主机类型。

./configure --host=arm-rockchip830-linux-uclibcgnueabihf
步骤四:编译和安装
一旦配置完成,你可以运行make和make install命令来编译和安装iperf3。

make

make install
如果你希望将iperf3安装到特定目录(例如,交叉编译环境的根文件系统),可以在make install时指定安装前缀:

make install DESTDIR=/path/to/target/rootfs

 

5.编译环境变量设置(临时or永久)

设置环境变量的步骤可以在你的终端中执行。为了确保这些环境变量在每次编译时都有效,可以选择临时设置(只在当前终端会话中有效)或永久设置(每次打开终端时自动生效)。

临时设置环境变量
在你的终端中直接执行这些命令。它们将在当前终端会话中有效,关闭终端后设置将失效。

export PATH=/data/tools/arm-rockchip830-linux-uclibcgnueabihf/bin:$PATH
export CROSS_COMPILE=arm-rockchip830-linux-uclibcgnueabihf-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export AS=${CROSS_COMPILE}as
export LD=${CROSS_COMPILE}ld
export NM=${CROSS_COMPILE}nm
export OBJCOPY=${CROSS_COMPILE}objcopy
export OBJDUMP=${CROSS_COMPILE}objdump
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip

永久设置环境变量
为了使环境变量在每次打开终端时都自动生效,可以将这些设置添加到你的 shell 配置文件中,如 .bashrc、.bash_profile 或 .profile 文件中。以下步骤假设你使用的是 Bash shell。

1. 编辑配置文件
打开你的 .bashrc 或 .bash_profile 文件进行编辑(选择其中一个即可,通常 .bashrc 是更常用的)。

nano ~/.bashrc
或者

nano ~/.bash_profile

2. 添加环境变量
在文件的末尾添加以下行:

# Add ARM cross-compilation tools to PATH
export PATH=/data/tools/arm-rockchip830-linux-uclibcgnueabihf/bin:$PATH
export CROSS_COMPILE=arm-rockchip830-linux-uclibcgnueabihf-
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export AS=${CROSS_COMPILE}as
export LD=${CROSS_COMPILE}ld
export NM=${CROSS_COMPILE}nm
export OBJCOPY=${CROSS_COMPILE}objcopy
export OBJDUMP=${CROSS_COMPILE}objdump
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip

3. 保存并关闭文件
在 nano 中,按 Ctrl+O 保存文件,按 Enter 确认,然后按 Ctrl+X 退出编辑器。

4. 使更改生效
你需要重新加载文件以使更改生效,或者重新打开一个终端。可以使用以下命令重新加载:

source ~/.bashrc
或者

source ~/.bash_profile

5.验证环境变量
确保环境变量已正确设置:

echo $PATH
echo $CROSS_COMPILE
输出中应包含 /data/tools/arm-rockchip830-linux-uclibcgnueabihf/bin 以及 arm-rockchip830-linux-uclibcgnueabihf- 前缀。

 

6.交叉编译curl

1.下载openssl并进行交叉编译
mkdir /data/openssl
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar zxf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
./Configure linux-generic32 shared --cross-compile-prefix=arm-rockchip830-linux-uclibcgnueabihf- --prefix=/data/openssl
make 
make install 

2.下载curl并进行交叉编译,添加openssl是为curl使用https
mkdir /data/curl
wget --no-check-certificate https://curl.se/download/curl-7.80.0.tar.gz 
tar zxf curl-7.80.0.tar.gz 
cd curl-7.80.0
./configure --host=arm-rockchip830-linux-uclibcgnueabihf --with-ssl=/data/openssl --prefix=/data/curl LDFLAGS="-Wl,-rpath,/data/openssl/lib"
make
make install

3.拷贝到arm环境上,执行curl命令,报如下错误
/lipc/curl/bin/curl: can't load library 'libssl.so.1.1'
/lipc/curl/bin/curl: can't load library 'libcrypto.so.1.1'

4.需要把编译好的/data/openssl拷贝过来,然后进入到lib目录下,做软链接
ln -s /tmp/openssl/lib/libssl.so.1.1 /lib64/libssl.so.1.1
ln -s /tmp/openssl/lib/libcrypto.so.1.1  /lib64/libcrypto.so.1.1

5.之后再给curl命令做一个软链接
ln -s /lipc/curl/bin/curl /usr/bin/curl

6.验证curl是否可以用
# curl
curl: try 'curl --help' or 'curl --manual' for more information

 

posted @ 2024-05-29 16:01  Leonardo-li  阅读(1584)  评论(0编辑  收藏  举报