在linux中arm-linux-gcc和/usr/bin/gcc有啥区别

在Linux中,arm-linux-gcc/usr/bin/gcc都是编译器,但它们之间存在显著的区别,主要体现在编译目标、使用场景以及编译生成的二进制文件的可执行性上。而软链接则是Linux文件系统中的一种特殊文件类型,用于创建一个文件的别名。

arm-linux-gcc与/usr/bin/gcc的区别

  1. 编译目标

    • arm-linux-gcc:这是一个交叉编译器,主要用于在Linux系统下编译生成可以在ARM架构的处理器上运行的二进制文件。它允许开发者在编写代码时使用的环境与代码最终运行的环境不同,即实现编写环境和执行环境的分离。
    • /usr/bin/gcc:这是Linux系统下默认的GCC编译器,它编译生成的二进制文件是专为Linux系统(通常是x86或x86_64架构)设计的。这些二进制文件在Linux系统下运行,但无法在ARM架构的处理器上直接运行。
  2. 使用场景

    • arm-linux-gcc:主要用于嵌入式开发、ARM架构的硬件开发等场景。在这些场景中,开发者需要在Linux系统下编写代码,但希望生成的程序能够在ARM架构的硬件上运行。
    • /usr/bin/gcc:则更广泛地用于Linux系统下的软件开发、系统编程等场景。它编译生成的程序只能在Linux系统(通常是与编译器相同的架构)上运行。
  3. 编译生成的二进制文件的可执行性

    • 使用arm-linux-gcc编译生成的二进制文件在ARM架构的处理器上是可执行的,但在Linux系统(如x86或x86_64架构)上则无法直接运行。
    • 使用/usr/bin/gcc编译生成的二进制文件在Linux系统(与编译器相同的架构)上是可执行的,但在ARM架构的处理器上则无法直接运行。

软链接的含义

软链接(也称为符号链接)是Linux文件系统中的一种特殊文件类型,它指向另一个文件或目录。创建软链接后,可以像访问原始文件或目录一样访问软链接,但实际上是在访问软链接所指向的文件或目录。软链接类似于Windows系统中的快捷方式。

在Linux中,可以使用ln -s命令创建软链接。例如,要创建一个指向/usr/bin/gcc的软链接/opt2/test/gcc-soft,可以使用以下命令:

ln -s /usr/bin/gcc /opt2/test/gcc-soft

这样,/opt2/test/gcc-soft就成为了一个软链接,指向/usr/bin/gcc。通过访问/opt2/test/gcc-soft,实际上是在访问/usr/bin/gcc

综上所述,arm-linux-gcc/usr/bin/gcc在Linux系统中扮演着不同的角色,分别用于不同的编译目标和场景。而软链接则是Linux文件系统中的一种便捷功能,允许用户创建文件的别名以便更轻松地访问它们。

hqyj@ubuntu:~$ pkg -L gcc-arm-linux-gnueabihf 2>/dev/null | grep bin/ hqyj@ubuntu:~$ dpkg -L gcc-arm-linux-gnueabihf 2>/dev/null | grep bin/ hqyj@ubuntu:~$ dpkg -L gcc-arm-none-eabi 2>/dev/null | grep bin/ hqyj@ubuntu:~$ find /opt ~/ /usr/local -name "*-gcc" 2>/dev/null | grep -E "arm|none-eabi" /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/share/gcc-arm-none-eabi/bin/arm-none-eabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/share/gcc-arm-none-eabi/bin/arm-none-eabi-gcc /home/hqyj/Downloads/gcc-4.6.4/bin/arm-linux-gcc /home/hqyj/Downloads/gcc-4.6.4/bin/arm-arm1176jzfssf-linux-gnueabi-gcc /home/hqyj/Downloads/gcc-4.6.4/bin/arm-none-linux-gnueabi-gcc hqyj@ubuntu:~$ which arm-linux-gnueabihf-gcc 2>/dev/null hqyj@ubuntu:~$ which arm-none-eabi-gcc 2>/dev/null hqyj@ubuntu:~$
最新发布
07-18
hqyj@ubuntu:~$ echo $ PATH $ PATH hqyj@ubuntu:~$ find / -path "*usr/bin/*-linux-*" 2>/dev/null | grep gcc /usr/bin/x86_64-linux-gnu-gcc-nm /usr/bin/x86_64-linux-gnu-gcc /usr/bin/x86_64-linux-gnu-gcc-ranlib /usr/bin/x86_64-linux-gnu-gcc-9 /usr/bin/x86_64-linux-gnu-gcc-ranlib-9 /usr/bin/x86_64-linux-gnu-gcc-ar-9 /usr/bin/x86_64-linux-gnu-gcc-ar /usr/bin/x86_64-linux-gnu-gcc-nm-9 /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ar hqyj@ubuntu:~$
07-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值