关于怎么知道linux(ubuntu)系统交叉编译器的命令的方法:
要查看自己系统中可用的交叉编译器命令,可以通过以下方法:
方法 1:查看交叉编译工具链的 bin 目录
如果你知道交叉编译器的安装路径(比如之前解压的目录),直接查看其bin
文件夹下的可执行文件:
# 进入工具链的bin目录(替换为你的实际路径)
cd ~/aarch64-rk3568-linux-gnu/bin# 列出所有编译器相关命令
ls | grep -E "gcc|g\+\+|ld|objdump"
通常会看到类似以下的命令(根据工具链不同名称略有差异):
aarch64-rk3568-linux-gnu-gcc
(C 编译器)aarch64-rk3568-linux-gnu-g++
(C++ 编译器)aarch64-rk3568-linux-gnu-ld
(链接器)
方法 2:通过环境变量 PATH 查找
如果已经将工具链的bin
目录添加到环境变量PATH
中,可以直接搜索系统中的交叉编译器:
# 搜索所有包含"arm"或"aarch64"的gcc命令
which -a *arm*gcc* *aarch64*gcc*# 或使用find命令全局搜索(可能需要root权限)
sudo find / -name "*arm*gcc" -o -name "*aarch64*gcc" 2>/dev/null
方法 3:查看已安装的交叉编译包(适用于 apt 安装的工具链)
如果是通过包管理器(如 apt)安装的,可以列出已安装的交叉编译相关包:
# 列出所有arm相关的编译器包
dpkg -l | grep gcc | grep -E "arm|aarch64"
从输出中可以看到类似gcc-aarch64-linux-gnu
或gcc-arm-linux-gnueabi
的包,对应的命令通常就是aarch64-linux-gnu-gcc
或arm-linux-gnueabi-gcc
。
通过以上方法找到的命令(如aarch64-rk3568-linux-gnu-gcc
),就是你需要使用的交叉编译器命令。
比如我的
amai@blzlbxz:~/aarch64-rk3568-linux-gnu/bin$ ls | grep -E "gcc|g\+\+|ld|objdump"
aarch64-buildroot-linux-gnu-addr2line
aarch64-buildroot-linux-gnu-ar
aarch64-buildroot-linux-gnu-as
aarch64-buildroot-linux-gnu-c++
aarch64-buildroot-linux-gnu-c++.br_real
aarch64-buildroot-linux-gnu-c++filt
aarch64-buildroot-linux-gnu-cc
aarch64-buildroot-linux-gnu-cc.br_real
aarch64-buildroot-linux-gnu-cpp
aarch64-buildroot-linux-gnu-cpp.br_real
aarch64-buildroot-linux-gnu-elfedit
aarch64-buildroot-linux-gnu-g++
aarch64-buildroot-linux-gnu-g++.br_real
aarch64-buildroot-linux-gnu-gcc
aarch64-buildroot-linux-gnu-gcc-9.3.0
aarch64-buildroot-linux-gnu-gcc-9.3.0.br_real
aarch64-buildroot-linux-gnu-gcc-ar
aarch64-buildroot-linux-gnu-gcc-nm
aarch64-buildroot-linux-gnu-gcc-ranlib
aarch64-buildroot-linux-gnu-gcc.br_real
aarch64-buildroot-linux-gnu-gcov
aarch64-buildroot-linux-gnu-gcov-dump
aarch64-buildroot-linux-gnu-gcov-tool
aarch64-buildroot-linux-gnu-gprof
aarch64-buildroot-linux-gnu-ld
aarch64-buildroot-linux-gnu-ld.bfd
aarch64-buildroot-linux-gnu-nm
aarch64-buildroot-linux-gnu-objcopy
aarch64-buildroot-linux-gnu-objdump
aarch64-buildroot-linux-gnu-ranlib
aarch64-buildroot-linux-gnu-readelf
aarch64-buildroot-linux-gnu-size
aarch64-buildroot-linux-gnu-strings
aarch64-buildroot-linux-gnu-strip
aarch64-linux-g++
aarch64-linux-g++.br_real
aarch64-linux-gcc
aarch64-linux-gcc-9.3.0
aarch64-linux-gcc-9.3.0.br_real
aarch64-linux-gcc-ar
aarch64-linux-gcc-nm
aarch64-linux-gcc-ranlib
aarch64-linux-gcc.br_real
aarch64-linux-ld
aarch64-linux-ld.bfd
aarch64-linux-objdump
从你列出的工具来看,你可以使用以下命令进行编译:
推荐使用的交叉编译器命令:
# 编译C程序
aarch64-linux-gcc 1.c -o 1# 如果需要编译C++程序
aarch64-linux-g++ 1.cpp -o 1
说明:
- 你的工具链中存在
aarch64-linux-gcc
这个命令(这是 C 语言编译器),它是aarch64-buildroot-linux-gnu-gcc
的简化别名,功能完全一致 - 对应的 C++ 编译器是
aarch64-linux-g++
- 这些命令针对的是 64 位 ARM 架构 的 Linux 系统,生成的程序可以在你的 rk3568 等 64 位 ARM 开发板上运行
验证方法:
编译后可以用工具链中的 objdump
查看生成的程序架构,确认是否正确: