> 技术文档 > 关于怎么知道linux(ubuntu)系统交叉编译器的命令的方法:

关于怎么知道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-gnugcc-arm-linux-gnueabi的包,对应的命令通常就是aarch64-linux-gnu-gccarm-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-addr2lineaarch64-buildroot-linux-gnu-araarch64-buildroot-linux-gnu-asaarch64-buildroot-linux-gnu-c++aarch64-buildroot-linux-gnu-c++.br_realaarch64-buildroot-linux-gnu-c++filtaarch64-buildroot-linux-gnu-ccaarch64-buildroot-linux-gnu-cc.br_realaarch64-buildroot-linux-gnu-cppaarch64-buildroot-linux-gnu-cpp.br_realaarch64-buildroot-linux-gnu-elfeditaarch64-buildroot-linux-gnu-g++aarch64-buildroot-linux-gnu-g++.br_realaarch64-buildroot-linux-gnu-gccaarch64-buildroot-linux-gnu-gcc-9.3.0aarch64-buildroot-linux-gnu-gcc-9.3.0.br_realaarch64-buildroot-linux-gnu-gcc-araarch64-buildroot-linux-gnu-gcc-nmaarch64-buildroot-linux-gnu-gcc-ranlibaarch64-buildroot-linux-gnu-gcc.br_realaarch64-buildroot-linux-gnu-gcovaarch64-buildroot-linux-gnu-gcov-dumpaarch64-buildroot-linux-gnu-gcov-toolaarch64-buildroot-linux-gnu-gprofaarch64-buildroot-linux-gnu-ldaarch64-buildroot-linux-gnu-ld.bfdaarch64-buildroot-linux-gnu-nmaarch64-buildroot-linux-gnu-objcopyaarch64-buildroot-linux-gnu-objdumpaarch64-buildroot-linux-gnu-ranlibaarch64-buildroot-linux-gnu-readelfaarch64-buildroot-linux-gnu-sizeaarch64-buildroot-linux-gnu-stringsaarch64-buildroot-linux-gnu-stripaarch64-linux-g++aarch64-linux-g++.br_realaarch64-linux-gccaarch64-linux-gcc-9.3.0aarch64-linux-gcc-9.3.0.br_realaarch64-linux-gcc-araarch64-linux-gcc-nmaarch64-linux-gcc-ranlibaarch64-linux-gcc.br_realaarch64-linux-ldaarch64-linux-ld.bfdaarch64-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 查看生成的程序架构,确认是否正确: