苏嵌//叶圣民//2018.7.10

学习日志                                                                                                               姓名:叶圣民    日期:2018年7月10日

 

 

 今日学习任务:

1、了解嵌入式;(定义、开发流程、企业需求、发展前景)

2、前沿技术与嵌入式开发的关系;(人工智能、大数据、云计算)

3、嵌入式 Linux 安装及使用;(redhat,Ubuntu,虚拟机的作用)


 

今日任务完成情况

扫描二维码关注公众号,回复: 2119085 查看本文章

1、gcc介绍(gcc 是GNU计划的工具,可以编译多种语言,交叉编译器);

2、了解什么是交叉编译器?为什么需要交叉编译器?

             例:在win PC机下编译的汇编码和机器码是51单片机可以识别的汇编码和机器码。

3、源文件到可执行文件经历 预处理,编译,汇编 和 链接 这四个步骤;

4、预处理做的工作:

             对头文件展开;#include<stdio.h> VS  #include"stdio.h":<>:从系统头文件库搜索;"":先从当前目录搜索,无果后再去系统头文        件库搜索;

            gcc -E 1文件名.c > 2文件名.i;>重定向;

5、如何让编译器停止在预处理阶段?

             gcc -c 文件名.c > 文件名.i;

6、编译阶段做哪些工作?

             语法检查,词法分析;

7、如何让编译其停止在编译阶段?

            gcc -c 文件名.c //当前目录下生产 .o 目标文件;

8、 -S汇编(gcc -S 文件名.c):生产汇编文件;

9、-o 例:gcc hello.c -o hello //生产hello名的可执行文件

10、 -I      例 gcc hello.c -I../  /*指定第三方头文件搜索路径

11、链接

12、优化 1级2级3级:例 gcc -o1 hello.c

13、-w /*关闭警告*/   -Wall /*开警告*/

14、静态库(1) 和 动态库(2):

               1.文件名.a;先生成 .o文件;ar rcs libadd.a add.o /*其中库文件真是名为add*/;链接库 gcc main.c -ladd -L./* . 当前目录*/

               2.建立 gcc -shared -fPIC -o 库名.so 源文件;使用 gcc 源文件.c ./库名.so -o 可执行文件;

15、静态库 和 动态库 的区别:

              静态库 在编译前把所有库文件加载好,这样会有许多多余文件,使可执行文件过大,但是编译速度快;

              动态库 在编译时用到之后再搜索所需文件,这样可执行文件小,但是执行时需要多次搜索库文件,速度慢;

 

今日开发中出现的问题汇总

 1、如何输出0~100以内的素数?

 2、链接的作用?

 

 

今日未解决问题

        链接的作用?

 

今日开发收获

       学会了gcc的许多强大的功能;

 

 

自我评价

        通过今天的开发和学习;基本完成了今日的学习目标;了解了gcc强大的功能;学会了几种gcc的使用方法;了解了从源代码到可执行文件的过程。

 

 

 

其他

 无

 

hello.c: 

#include<stdio.h>

int main()
{
   printf("Hello world!\n");
   return 0;

}


/*******text1.c(0~100输出所有素数)********/

#include<stdio.h>

int main()

{   
    int a;
    int b;
    int c;
    printf("2 ");
    for(a = 3;a < 100;a += 2)
    {
        for(b = 3;(c = b * b)<= a;b += 2)
   if(a % b == 0) break;
       if(c > a)
printf("%d ",a);
    }
    printf("\n");
    return 0;
}


/*****main.c*******/

#include <stdio.h>

int main()
{
    add(8,4);


    sub(8,4);


    return 0;

}


/*********add.c**********/

#include <stdio.h>

int add(int a,int b)
{
    printf("a = %d; b = %d \n",a,b);
    
    printf("add = %d \n",a + b);
    
    return a + b;

}


/********sub.c********/

#include <stdio.h>

int sub(int i,int k)
{
    printf("i = %d; k = %d \n",i,k);


    printf("sub = %d \n",i - k);
    
    return i - k;
}

猜你喜欢

转载自blog.csdn.net/qq_31421117/article/details/80991383