300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(九)第一个程序背后的C语言知识

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(九)第一个程序背后的C语言知识

时间:2023-07-15 13:16:03

相关推荐

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(九)第一个程序背后的C语言知识

1.HelloWorld背后没那么简单

这部分知识笼统的介绍一下。提出几个意识。其一,后期可能经常要用到C语言去编写应用程序,这一段意味着你要很熟悉C语言的编写规则以及背后的逻辑,比如指定头文件,库函数这些资源,在自己编写的时候,会在自己编写的时候使用这些资源。不了解的建议学习一下唐浩强的C语言。

1.1 交叉编译hello.c

使用GIT下载所有源码后,本节源码位于如下目录:

01_all_series_quickstart\04_嵌入式Linux应用开发基础知识\source\01_hello

hello.c的源码如下:

01 #include <stdio.h>0203 /* 执行命令: ./hello weidongshan04 * argc = 205 * argv[0] = ./hello06 * argv[1] = weidongshan07 */0809 int main(int argc, char **argv)10 {11if (argc >= 2)12 printf("Hello, %s!\n", argv[1]);13else14 printf("Hello, world!\n");15return 0;16 }17

在Ubuntu中可以执行以下命令编译、执行:

$ gcc -o hello hello.c$ ./helloHello, world!$ ./hello weidongshanHello, weidongshan!

上述命令编译得到的可执行程序hello可以在Ubuntu中运行,但是如果把它放到ARM板子上去,它是无法执行的。因为它是使用gcc编译的,是给PC机编译的,里面的机器指令是x86的。

我们要想给ARM板编译出hello程序,需要使用交叉编译工具链,比如:

$ arm-linux-gnueabihf-gcc -o hello hello.c

这样编译出来的hello程序才可以在ARM板子上运行。

1.2 请回答这几个问题

① 怎么确定交叉编译器中头文件的默认路径?

进入交叉编译器的目录里,执行:find -name “stdio.h”,它位于一个“include”目录下的根目录里。

这个“include”目录,就是要找的路径。

② 怎么自己指定头文件目录?

编译时,加上“-I <头文件目录>”这样的选项。

③ 怎么确定交叉编译器中库文件的默认路径?

进入交叉编译器的目录里,执行:find -name lib,可以得到xxxx/lib、xxxx/usr/lib,一般来说这2个目录就是要找的路径。

如果有很多类似的lib,进去看看,有很多so文件的目录一般就是要找的路径。

④ 怎么自己指定库文件目录、指定要用的库文件?

编译时,加上“-L <库文件目录>”这样的选项,用来指定库目录;

编译时,加上“-labc”这样的选项,用来指定库文件libabc.so。

1.3 u-boot kenerl rootfs 之间的关系

关于这三者之间的关系:请点击

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。