首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

gcc交叉编译工具相关知识(怎么得到;如何在Ubuntu中安装配置;sysroot目录介绍;头文件搜索路径)

  • 25-03-05 02:41
  • 2588
  • 6620
blog.csdn.net

目录

  • 01-gcc交叉编译工具是怎么来的?
  • 02-在Ubuntu中安装配置gcc交叉编译工具
    • 1-下载获取gcc交叉编译工具
    • 2-修改用户目录下的`.bashrc`文件配置好交叉编译工具的环境变量
    • 3-测试配置是否无问题
    • 4-进一步测试:通过生成目标文件来测试
  • 03-sysroot目录(gcc交叉编译工具中的重要目录)
  • 04-gcc交叉编译工具的头文件搜索路径

01-gcc交叉编译工具是怎么来的?

方法一:利用构建工具生成
可以利用Buildroot、Yocto等构建工具生成。用Buildroot构建生成开发过程中需要的gcc交叉编译工具的详情见 http://iyenn.com/rec/1709242.html
事实上,本篇博文中所用的交叉编译工具其实也是利用Buildroot构建生成的(后面运行命令arm-buildroot-linux-gnueabihf-gcc -v的结果中可以看出是Buildroot构建生成的)。

方法二:直接到ARM官网下载gcc交叉编译工具,即Arm GNU Toolchain,详情见 http://iyenn.com/rec/1709243.html

02-在Ubuntu中安装配置gcc交叉编译工具

1-下载获取gcc交叉编译工具

这里我们直接用开发板商已经构建好的gcc交叉编译工具。

按照博文 http://iyenn.com/rec/1709244.html的方法,把imx6ull的BSP下载好后,其中就有交叉编译工具。
在这里插入图片描述
当然,为了将来使用方便,我已经把它压缩并传到了百度网盘,链接如下:
https://pan.baidu.com/s/1QoZHC9YeyrfSJ8Hx99YKgw?pwd=q5ae

2-修改用户目录下的.bashrc文件配置好交叉编译工具的环境变量

有了它之后,我们配置一下就行了,按照下面的方法配置:
在Ubuntu图形化界面的终端下输入下面的命令:

gedit ~/.bashrc
  • 1

下面的命令究竟在修改位于哪里的哪个文件?

gedit ~/.bashrc
  • 1

命令 gedit ~/.bashrc 是用 gedit 文本编辑器打开位于当前用户主目录下的 .bashrc 文件。下面是这个命令的详细解释:


  1. gedit:

    • 是一个轻量级的图形化文本编辑器,通常在 GNOME 桌面环境中使用。
    • 这里用它来打开并编辑一个文件。
  2. ~:

    • ~ 表示当前用户的主目录。
    • 在不同用户环境下,~ 会解析为用户的具体主目录路径。例如:
      • 对于用户 alice,~ 解析为 /home/alice。
      • 对于用户 root,~ 解析为 /root。
  3. .bashrc:

    • 是一个隐藏文件(以 . 开头的文件是隐藏文件)。
    • 它是 Bash Shell 的配置文件,存储了用户自定义的 Shell 配置,如别名、环境变量、路径设置等。

从这里可以看出,实际上这里修改的是某个用户的终端的环境变量,而不是所有用户的,这一点要注意。

在末尾加上下面的配置语句:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
  • 1
  • 2
  • 3

关于这三条配置语句的详细解释见博文 http://iyenn.com/rec/1709245.html
关于这三条配置语句的详细解释见博文 http://iyenn.com/rec/1709245.html
关于这三条配置语句的详细解释见博文 http://iyenn.com/rec/1709245.html
关于这三条配置语句的详细解释见博文 http://iyenn.com/rec/1709245.html
关于这三条配置语句的详细解释见博文 http://iyenn.com/rec/1709245.html

在这里插入图片描述
在这里插入图片描述

然后就配置完了,配置完后执行下面的命令使其生效:

source ~/.bashrc
  • 1

3-测试配置是否无问题

首先测试环境变量是否配置成功
下面两条命令:

echo $ARCH
echo $CROSS_COMPILE
  • 1
  • 2
book@100ask:~/100ask_imx6ull-sdk$ echo $ARCH
arm
book@100ask:~/100ask_imx6ull-sdk$ echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
然后用下面这条命令测试是否能显示版本信息

arm-buildroot-linux-gnueabihf-gcc -v
  • 1

在这里插入图片描述
其实命令arm-buildroot-linux-gnueabihf-gcc -v是没有用到配置语句的第1句export ARCH=arm和第3句export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin的。
第1句是Makefile时用;
如果把arm-buildroot-linux-gnueabihf-gcc -v改为 ${CROSS_COMPILE}gcc -v那么就用到了第2句。

在这里插入图片描述

4-进一步测试:通过生成目标文件来测试

在 /home/book/目录中建立目录mycode

cd /home/book/
mkdir mycode
  • 1
  • 2

然后把文件:hello.c 复制到目录mycode中,这个代码的百度网盘下载地址:
https://pan.baidu.com/s/1CF_P5my7vwBJrL5FibYyjw?pwd=hxq5
内容:

#include 


/* 执行命令: ./hello weidongshan 
 * argc = 2
 * argv[0] = ./hello
 * argv[1] = weidongshan
 */

int main(int argc, char **argv)
{
	if (argc >= 2)
		printf("Hello, %s!\n", argv[1]);
	else
		printf("Hello, world!\n");
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述
接下来,进入目录/home/book/mycode/C001_hello

cd /home/book/mycode/C001_hello
  • 1

然后执行下面的命令:

arm-buildroot-linux-gnueabihf-gcc -o hello hello.c
  • 1

在这里插入图片描述
执行完成后,就在目录中成了hello可执行文件
在这里插入图片描述
然后看下生成的可执行文件是否是运行于ARM架构的,具体的方法见:
http://iyenn.com/rec/1709246.html

file hello
  • 1

在这里插入图片描述
从截图中可以看出,确实是运行于ARM平台上的,这样就没问题了。如果想实际上板测试,可以看下面这篇博文:
IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试

03-sysroot目录(gcc交叉编译工具中的重要目录)

详情见 http://iyenn.com/rec/1709248.html

04-gcc交叉编译工具的头文件搜索路径

详情见下面这篇博文
如何查看gcc编译器编译时的头文件搜索路径、各默认路径通常用于存放何种头文件、gcc编译器搜索头文件时不会去搜索默认路径中的子目录怎么办【头文件的目录嵌套】?

昊虹嵌入式技术交流群
QQ群名片
注:本文转载自blog.csdn.net的昊虹AI笔记的文章"https://blog.csdn.net/wenhao_ir/article/details/144326545"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top