交叉编译环境配置(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