C入门(上)

C编译入门

环境:ubuntu

  1. gcc/g++

     gcc -o hello.out hello.c       //-o表示目标文件
     ./hello.out                    //运行生成hello.out文件,通过
    
    g++ -g -c hw2.cpp               // -g为生成文件可调试((通过gdb进行调试),-c:Compile and assemble, but do not link
    
    
  2. makefile指令

    target ... : prerequisites ...     
     command    #注意前面间隔为tab
    

    注意:tab命令行tab一定要手敲,复制可能会因为转码问题导致makefile:6: *** missing separator. Stop.的问题

    举例

     存在三个文件
    
     /* solution.h */
     class Solution {
     public:
         void Say();//声明Say()方法
     };
    
    
      /* solution.cpp */
     #include <iostream>
     #include "solution.h"
     void Solution::Say(){//实现Say()方法
     std::cout << "HI!" << std::endl;
     }
    
     /* hw2.cpp */
     #include "solution.h"
     int main () {//主函数,使用Say()语法
         Solution sln;
         sln.Say();
         return 0;
     }
    
     由上可之程序入口为hw2.cpp文件,该文件引用了.h文件,.h文件中的Say()实现位于.c文件中,由此
     创建makefile文件在同一文件夹,内容为
     build : hw2.o solution.o	#目标为build文件,所需资源为hw2.o&solution.o,目标不存在或者资源文件不存在或者更新时执行command命令
         g++ -o build hw2.o solution.o 
     hw2.o : hw2.cpp solution.h	#在执行g++ -o build hw2.o solution.o 嵌套过程中,该部分的资源文件是齐全的,于是会先执行该语句
         g++ -g -c hw2.cpp
     solution.o : solution.h solution.cpp#同上
         g++ -g -c solution.cpp
     clean :						#特殊指令,不生成文件,执行clean语句make clean时会执行以下command
         rm hw2.o solution.o build
    
  3. gdb调试
    代码编写结束后,可以使用gdb进行代码的调试,ubuntu环境apt install gdb,以下以c文件编译调试举例

    gcc -g -o hello hello.c  //编译.c文件,生成hello文件,-g参数为可调试
    gdb hello                //调试hello文件
    Reading symbols from hello...
     (gdb) list              //进入gdb模式,打印出代码
     1       #include <stdio.h>
     2
     3       int main()
     4       {
     5                  printf("Hello, World! \n");
     6                     
     7                     return 0;
     8       }
     9
     (gdb) break 5           //在第5行添加断点
     Breakpoint 1 at 0x1151: file hello.c, line 5.
     (gdb) r                 //开始运行
     Starting program: /home/chen/c_project/hello 
     warning: Error disabling address space randomization: Operation not permitted
    
     Breakpoint 1, main () at hello.c:5  //代码将开始运行并在5行处停止
     5                  printf("Hello, World! \n");
     (gdb) c                             //c("continue")继续调试
     Continuing.
     Hello, World!                       //打印
     [Inferior 1 (process 27696) exited normally]
     (gdb) c                             
     The program is not being run.       //由于后面没有断点了,程序运行结束
     (gdb) q                             //q(quit)退出gdb调试模式
    

参考

gdb调试的基本使用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值