实验五:LINUX 下C语言使用、编译与调试实验

2023-11-18

实验五:LINUX 下C语言使用、编译与调试实验

一、实验目的:

  1. 练习并掌握Linux提供的vi编辑器来编译C程序
  2. 学会利用gcc、gdb编译、调试C程序
  3. 学会使用make工具

二、实验内容

  1. 编写C语言程序,用gcc编译并观察编译后的结果,运行生成的可执行文件。
  2. 利用gdb调试程序。
  3. 学习编写makefile,并进行编译。

三、实验步骤

1、文件编辑器vi 

进入vi,直接执行vi编辑程序。

例:# vi  test.c

显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。

1) vi的工作模式

(1)输入模式

输入以下命令即可进入vi输入模式:

a  

在光标之后加入资料

A  

在该行之末加入资料

i

在光标之前加入资料

I  

在该行之首加入资料

o

新增一行于该行之下

O

新增一行于该行之上

(2)命令模式

在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi:

:q!

离开vi,并放弃刚在缓冲区内编辑的内容

:wq

将缓冲区内的资料写入磁盘中,并离开vi

ZZ

同wq

:x

同wq

:w

将缓冲区内的资料写入磁盘中,但并不离开vi

:q

离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用

(3)命令模式下光标的移动

h

左移一个字符

j

下移一个字符

k

上移一个字符

l

右移一个字符

0(零)

移至该行的行首

$

移至该行的行尾

^

移至该行的第一个字符处

H

移至窗口的第一行

M

移至窗口中间那一行

L

移至窗口的最后一行

G

移至该文件的最后一行

W, w

下一个单词 (W 忽略符号)

B, b

上一个单词 (B 忽略符号)

(4)命令模式下的编辑命令

dd

删除当前光标所在行

yy

复制当前光标所在行

p

将复制的内容粘贴在光标所在的位置后

P

将复制的内容粘贴在光标所在的位置前

x

删除当前光标字符

X

删除当前光标之前字符

u

撤消

·

重做

 

2GNU C编译器

1)使用gcc

通常后跟一些选项和文件名来使用gcc编译器。gcc命令的基本用法如下:

      gcc [options] [filenames]

命令行选项指定的编译过程中的具体操作

2) gcc常用选项

当不用任何选项编译一个程序时,gcc将建立(假定编译成功)一个名为a.out的可执行文件。

选项含义:

-o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE 没

有指定,默认文件名是a.out.

例如,

# gcc  test.c

编译成功后,当前目录下就产生了一个a.out文件。

也可用-o选项来为即将产生的可执行文件指定一个文件名来代替a.out。

例如:

#gcc  –o  count count.c

此时得到的可执行文件就不再是a.out,而是count。

 

-c GCC 仅把源代码编译为目标代码。默认时GCC 建立的目标代码文件有一个.o 的

扩展名。

-E 对文件进行预处理

-S 对文件进行编译,生成汇编代码。

-O 对源代码进行基本优化。这些优化在大多数情况下都会使程序执行得更快。

-g 在可执行程序中包含标准调试信息。

-Wall 允许发出GCC 能提供的所有有用的警告,也可以用-W(warning)来标识指定的

警告。

-l name   链接静态库

-L dir   库文件的搜索路径

3)执行文件   

格式:     ./可执行文件名

例:

# ./a.out

# ./count

4)示例程序

  1. 设计一个程序,要求在屏幕上输出“这是第一个Linux c程序!”。

步骤1:设计编辑源程序代码

使用文本编辑器vim,在终端中输入:

[root@localhost root]#vim  1-1.c

 

输入完成后存盘:按ESC键→输入“:wq”回车

步骤2:编译程序

查看当前目录下是否有1-1.c文件,输入命令:

[root@localhost root]#ls

     1-1.c

编译:

[root@localhost root]#gcc  1-1.c -o 1-1

步骤3:运行程序

[root@localhost root]#ls

1-1.c   1-1

[root@localhost root]#./1-1

这是第一个Linux c程序!

  1. 设计一个程序,要求把输入的百分制的成绩转换成五级制输出。即输入成绩大于等于90分,显示“优秀”;若成绩介于80~90分,显示“良好”;若成绩介于70~80分,显示“中等”;若成绩介于60~70分,显示“及格”;若成绩小于60分,显示“不及格”。

步骤1:编辑源程序代码

    [root@localhost root]#vim 1-2.c

步骤2:用gcc编译程序

[root@localhost root]#gcc  1-2.c –o  1-2

步骤3:运行程序

[root@localhost root]#./1-2

                            

  1. 设计一个程序,要求输入两个整数,求和输出。通过使用gcc的参数,控制gcc的编译过程,了解gcc的编译过程,进一步认识gcc的灵活性。

步骤1:编辑源程序代码

[root@localhost root]#vim  1-3.c

步骤2:预处理阶段

[root@localhost root]#gcc  1-3.c –o  1-3.i  –E

[root@localhost root]#vim  1-3.i

步骤3:编译阶段

[root@localhost root]#gcc  1-3.i –o  1-3.s –

[root@localhost root]#vim  1-3.s

步骤4:汇编阶段

[root@localhost root]#gcc  1-3.s –o  1-3.o  –c

步骤5:链接阶段

[root@localhost root]#gcc  1-3.o –o  1-3

Linux系统把printf和scanf函数的实现,都放在了libc.so.6的库文件中。在没有参数指定时,gcc到系统默认的路径“/usr/lib”下查找,链接到libc.so.6库函数中去,这样就有了printf和scanf函数的实现部分。把程序中一些函数的实现,这是链接阶段的工作。

完成链接后,gcc就可以生成可执行程序文件  

 

  1. 设计一个程序,要求把输入的字符串原样输出,程序中的头文件自己定义,源程序文件为“1-4.c”,自定义的头文件为“my.h”,放在目录“/root”下。

步骤1:设计编辑源程序代码1-4.c

[root@localhost root]#vim  1-4.c

步骤2:设计编辑自定义的头文件my.h

[root@localhost root]#vim  my.h

步骤3:正常编译1-4.c文件:

[root@localhost root]#gcc  1-4.c –o  1-4

编译器提示出错。

步骤4:加“-I dir”参数编译:

[root@localhost root]#gcc  1-4.c  –o 1-4  –I  /root

  1. 设计一个程序,要求把输入的数字作为X轴坐标,算出它的sin值。

步骤1:编辑源程序代码

[root@localhost root]#vim  1-6.c

步骤2:用gcc编译程序

[root@localhost root]#gcc  1-6.c –o  1-6

结果发现编译器报错:

原因是需要指定函数的具体路径,要查找函数sin,输入:

[root@localhost root]#nm –o -D /lib/i386-linux-gnu/*.so | grep  sin

在/lib/libm-2.3.2.so:00008610 W sin中除去函数库头lib及函数的版本号-2.3.2,所余下的符号为“m”,在编译时用字符“l”与余下的符号“m”相连接成“lm”,在编译时加上此参数就能正确地通过编译,即:

[root@localhost root]# gcc 1-6.c  –o 1-6  -lm

  1. 步骤3:运行程序

[root@localhost root]#./1-6

  1. gdb调试工具

1)调试编译代码

为了使gdb正常工作,必须使你的程序在编译时包含调试信息。调试信息里包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。

在编译时用–g 选项打开调试选项。

2) gdb基本命令

命 令

描  述

file

装入欲调试的可执行文件

kill

终止正在调试的程序

list

列出产生执行文件的源代码部分

next

执行一行源代码但不进入函数内部

step

执行一行源代码并进入函数内部

run

执行当前被调试的程序

quit

终止gdb

watch

监视一个变量的值而不管它何时被改变

break

在代码里设置断点,使程序执行到这里时被挂起

make

不退出gdb就可以重新产生可执行文件

shell

不离开gdb就执行UNIX shell 命令

3)使用gdb调试示例程序

设计一个程序,要求输入两个整数,判断并输出其中的最小数。

步骤1:编辑源程序代码:

步骤2:用gcc编译程序

[root@localhost root]#gcc 1-9.c  –o  1-9 –g

步骤3:进入gdb调试环境

[root@localhost root]#gdb  1-9

步骤4:用gdb调试程序

(1)查看源文件

在gdb中输入“l”(list)就可以查看程序源代码,一次显示10行; 

 

(2)设置断点

在gdb中设置断点命令是“b”(break),后面跟行号或者函数名。

如:(gdb) b 10   

(3)查看断点信息

用命令“info b”(info break)查看断点信息。

(4)运行程序:输入“r”(run)开始运行程序。

(5)查看变量值

程序运行到断点处会自动暂停,输入“p 变量名” 

调试程序时,可能需要修改变量值,程序运行到断点处时,输入“set 变量=设定值”,例如给变量“a2” 赋值11,输入“set a2=11”。

gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再引用此变量,可以直接使用“$n”,提高了调试效率。

(6)单步运行

在断点处输入“n”(next)或者“s”(step) 。它们之间的区别在于:若有函数调用时,“s”会进入该函数而“n”不会进入该函数。

(7)继续运行程序

输入“c”(continue)命令恢复程序的正常运行,把剩余的程序执行完,并显示执行结果。

(8)退出gdb环境:输入“q”(quit)命令。

4)调试程序

(1)源程序gdbtest1.c,分析程序的功能,如果出错,要求用gdb进行调试并给出修改方案。

基本步骤:

  • 编译:gcc  -g -o  gdbtest1  gdbtest1.c
  • 运行:./gdbtest1
  • 开始调试:gdb  gdbtest1 

输出结果不对:

gdb调试,发现i和sum都是静态的,在程序运行过程中每次调用add range函数i和sum的值不会改变,所以才会导致错误。

改进的程序:

 

 (2) 源程序greet.c,功能:按照正序和逆序输出给定的字符串。要求用gdb进行调试,,分析出错的原因并给出修改方案。(没有发现错误))

4make的使用

(1)用vi编辑以下程序,程序清单:

main.c

function1.h

function1.c

function2.h

function2.c

//main.c

#include "function1.h"

#include "function2.h" 

int main(int argc, char **argv)

{

function1_print("hello");

function2_print("world");

       return 0;

}

 

//function1.h 

 

void function1_print(char *str); 

 

//function1.c 

#include "function1.h"

void function1_print(char *str)

{

printf("This is function1 print %s\n", str);

}

 

//function2.h

 

void function2_print(char *str); 

 

//function2.c 

#include "function2.h"

void function2_print(char *str)

{

printf("This is function2 print %s\n", str);

}

实验要求:

  1. 画出各个源程序、目标文件以及最终的目标文件之间的依赖关系图。

 

(2)编辑makefile文件

(3)利用make命令进行上述程序的编译,生成可执行代码并运行。

(4)修改其中一个源文件,重新make,察看编译过程。

(5)通过使用makefile变量和隐含规则,对makefile文件进行简化

实验题目:

  1. 编写一个简单的C语言程序:输出两行文字“How are you”,在Linux下编辑、编译、运行。

  1. 编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件

  1. Makfile文件中的每一行是描述文件间依赖关系的make规则。

对于下面的Makefile文件:

CC = gcc

OPTIONS = -O3 -o

OBJECTS = main.o stack.o misc.o

SOURCES = main.c stack.c misc.c

HEADERS = main.h stack.h misc.h

polish: main.c $(OPJECTS)

  $(CC) $(OPTIONS)  polish $(OBJECTS) -lm

main.o: main.c main.h misc.h

stack.o: stack.c stack.h misc.h

misc.o: misc.c misc.h

回答:

  1. 所有变量名字

CC 、OPTIONS

b.所有目标文件的名字

每个目标文件的名字:main.o、stack.o、misc.o

c.每个目标的依赖文件

                     main.o: main.c main.h misc.h

stack.o: stack.c stack.h misc.h

misc.o: misc.c misc.h

d.生成每个目标文件所需执行的命令

cc  -c main.c

                cc  -c stack.c

cc  -c misc.c

e.画出makefile对应的依赖关系树。

f.生成main.o,为什么?

因为需要将编译后的代码变成汇编代码,生成main.o文件和Target有依赖关系,想要编译成功target必须生成main.o文件。

4.用编辑器创建main.c, compute.c, input.c, compute.h, input.h和main.h文件。下面是它们的内容。注意compute.h和input.h文件仅包含了compute和input函数的声明但没有定义。定义部分是在compute.c和input.c文件中。main.c包含的是两条显示给用户的提示信息。(相关程序代码如下)

 

[user@localhost user]$ cat compute.h

/*compute函数的声明原型*/

double compute(double,double);

              [user@localhost user]$ cat input.h

                     /*input函数的声明原型*/

                     double input(char*);

              [user@localhost user]$ cat main.h

                     /*声明用户提示*/

                     #define PROMPT1 "请输入x的值:"

                     #define PROMPT2 "请输入y的值:"

              [user@localhost user]$ cat compute.c

                     #include<stdio.h>

                     #include <math.h>

                     #include "compute.h"

                     double compute(double x,double y)

                     {

                            return (pow((double)x,(double)y));

                     }

              [user@localhost user]$cat input.c

                     #include<stdio.h>

                     #include "input.h"

                     double input(char *s)

                     {

                            float x;

                            printf("%s",s);

                            scanf("%f",&x);

                            return (x);

                     }

              [user@localhost user]$ cat main.c

                     #include<stdio.h>

                     #include "main.h"

                     #include "compute.h"

                     #include "input.h"

                     int main(int argc, char *argv[])

                     {

                            double x,y;

                            printf("本程序从标准输入获取x和y的值并显示x的y次方.\n");

                            x=input(PROMPT1);

                            y=input(PROMPT2);

                            printf("x的y次方是:%6.3f\n",compute(x,y));

                            return 0;

                     }

              结合上面代码创建Makefile文件,使用make命令,生成power可执行文件,并运行power程序。给出完成上述工作的步骤和程序运行结果。

  1. 下面程序的功能是提示你输入一个整数并把它显示到屏幕上,现在它能够通过编译但运行不正常。利用gdb找出它的错误并改正它。重新编译和运行改过的程序以确保它工作正常。

#include<stdio.h>

#define PROMPT "请输入一个整数:"

void get_input(char *, int *);

void main()

{

  int    *user_input;

  get_input(PROMPT, user_input);

  (void) printf("你输入了:%d。\n", user_input);

}

void get_input(char *prompt, int *ival)

{

  (void) printf("%s", prompt);

  scanf("%d", ival);

}

发现编译有错误:

修改程序:

还是输出结果不正确

 

心得体会:这次的实验有难度,花了很多精力和时间去了解gcc,make,gdb,首先gcc的内容很快就会做完,make内容是在老师上课演示一遍过程才知道怎么运行,gdb的话,我在阿里云开的服务器里虽然有gdb,但是怎么调都使用不了,自己又尝试安装了新的,但是一直不成功,最终我在自己旧电脑上用虚拟机做才成功,但是一直都不怎么理解gdb是怎么调试找出错误的,以至于有些用gdb调试的实验写得乱七八糟,最后一题,改了之后虽然编译成功但是结果却不正确,也是找了好久都找不出原因。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验五:LINUX 下C语言使用、编译与调试实验 的相关文章

  • 【python实现网络爬虫22】唯品会商品信息实战步骤详解

    唯品会商品信息实战 1 目标网址和页面解析 2 爬虫初探 3 爬虫实操 3 1 进行商品id信息的爬取 3 2 商品id数据url构造 3 3 商品id数据格式转化及数量验证 3 4 商品详细信息获取 4 全部代码 手动反爬虫 原博地址 知
  • 可以用filament的示例material_sandbox来调整obj的pbr渲染参数,也有个gltf_viewer读取gltf模型

    如题 说不准以后导出文件就不用cesiumlab了 具体待查
  • 编程获取图像中的圆半径

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 即将推出EmguCV的教程 请大家还稍作等待 之前网友咨询如何获得图像中圆形的半径 其中有两个十字作为标定 十字之间距离为100mm 如下
  • 【每日运维】U盘启动盘安装 ESXi 6.7.0 安装卡在 loading /bnxtroce.v00

    问题描述 ESXi 6 7 0 安装进度卡在loading bnxtroce v00 进度处 处理方法 重新制作启动盘 写入方式改为 USB ZIP v2 设置服务器的 bios设置 启动方式改为 UEFI 重启开机安装即可
  • 打印数字三角及蛇形矩阵(C语言)

    题目描述 从键盘输入N 输出如下图所示的N行的数字三角 例如 N 5 那么输出如下 输入格式 输入一个整数N 1 lt N lt 45 输出格式 输出如题所示的数字三角形 为了输出美观 每个数字栈5个字符位 右对齐 即 5d 解题的思路 1
  • ISP(五) RGB、YUV与YCbCr的概念详解

    一 概念 首先要说明RGB YUV和YCbCr都是人为规定的彩色模型或颜色空间 有时也叫彩色系统或彩色空间 它的用途是在某些标准下用通常可接受的方式对彩色加以描述 1 RGB 红绿蓝 是依据人眼识别的颜色定义出的空间 可表示大部分颜色 但在
  • 浅谈逻辑漏洞中的越权访问漏洞

    越权漏洞 越权访问漏洞示意图 一 越权访问漏洞简介 1 类型 水平越权 通过更换的某个ID之类的身份标识 从而使A账号获得 增删查改 B账号的数据 垂直越权 使用低权限身份的账号 发送高权限账号的请求 获得其高权限的操作 未授权访问 通过删
  • Vue--ElementUI组件库

    1 概述 Element官网 ElementUI是饿了么前端团队推出的一款基于Vue桌面端UI框架 和Boostrap一样对原生的HTML标签进行了封装 美化 让我们能够专注于业务逻辑而不是UI界面 默认情况下无论我们有没有使用到某个组件
  • JVM类加载器的urlclassloader和appclassloader

    package kite jvm import java net URL 首先为什么 1 可以 因为OneURLClassLoader在加载Constant的时候发现需要加载 OneInterface 因为他是其接口 因为OneURLCla
  • merkle tree

    merkle tree 是用来存储hash值的一棵树 其叶子是数据块的hash值 非叶子节点是其对应子节点的串联字符串的hash hash是一个把任意长度数据映射成固定长度的函数 对于数据完整性校验 最简单的方法是对整个数据做Hash运算得
  • elasticsearch对数组进行搜索

    写在前面 我们在进行全文建搜的时候往往会添加很多前置条件 比如地区 时间 以及知识点树 我们需要在搜索之前先进行过滤在进行搜索 Array索引 es的数据类型中实际上是不包含数组类型的 在默认的情况下任何字段都可以包含0或者是更多的值 并且
  • docker配置nginx

    docker配置nginx 1 首先安装nginx镜像 docker pull nginx 安装好可以选择测试 也可以跳过 测试命令两行 docker run name nginx test p 80 80 d nginx docker s
  • OC 6702升压型恒流驱动芯片, ESOP8 封装,内置 100V 功率 MOS

    概述 OC 6702 是一款内置 100V 功率 NMOS 高效率 高精度的升压型大功率 LED 恒流驱动芯片 OC6702 采用固定关断时间的控制方 式 关断时间可通过外部电容进行调节 工作频率可根据用户要求而改变 OC6702 通过调节
  • 判断一个对象是否有空的属性值

    直接上代码 const trim str gt const newStr str 0 str str toString return newStr newStr replace s s g str 判断一个对象是否有空的属性值 const
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • Java JDK8 Stream 使用详解

    Stream 流 的 筛选 去重 截取跳过映射 合并多个流 匹配 归约 简单示例 1 什么是流 2 流的特点 3 流的操作种类 4 流的操作过程 5 使用流 1 什么是流 流是Java8引入的全新概念 它用来处理集合中的数据 暂且可以把它理
  • [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s

    背景 想导入一个别人的项目 却发现使用navicat运行数据库批次文件时出现了错误 爆出了这样的错误 Err 1064 You have an error in your SQL syntax check the manual that c
  • uniapp的tab切换自定义组件封装

    一 创建组件 在存放组件的文件夹新建一个 vue文件 二 使用子组件
  • 并不是所有的程序员都适合做技术管理

    CSDN记者 张勇 写在之前 在CSDN博客闲逛时无意间进入一个博客 博客地址 博客里的文章质量很高 文章话题主要涉及程序员素养和管理 文章有翻译也有原创 看了几篇文章之后 突然很想和这篇博名为 呦呦鹿鸣 签名则引用孟子 穷则独善其身 达则

随机推荐

  • js 字符串与二维数组间的转化

    1 字符串转二维数组 var a 1 2 3 4 5 a b c d e y1 y2 y3 y4 y5 var str eval a alert str 0 3 结果 4 2 二维数组转字符串 var b 1 2 a b function
  • 云原生之使用Docker部署Dashdot服务器仪表盘

    云原生之使用Docker部署Dashdot服务器仪表盘 一 Dashdot介绍 二 检查本地系统环境 1 检查本地系统版本 2 检查docker状态 3 检查docker版本 三 下载Dashdot镜像 四 部署Dashdot应用 1 创建
  • oracle存储过程----存储过程执行简单的增删改查sql

    存储过程执行简单的增删改查sql 上一篇文章 oracle存储过程 变量的介绍及使用 PL SQL 下边是一个简单的数据库表 为了方便 我都定义成了varchar 类型 1 存储过程执行增加sql 首先写一个增加的存储过程 create o
  • MQTT学习笔记——MQTT协议使用

    http mosquitto org files source mosquitto 1 4 5 tar gz 安装出错时openssl等 需要更改 cd mosquitto 1 4vi config mk可以选择去掉SSL的功能 可以参考h
  • ES相关随手记

    ES相关随手记 一 基本操作 1 es三大属性 索引 映射 文档 1 1 索引 查看 es 中所有的索引信息 GET cat indices v 创建 索引 PUT products 创建 索引 指定库信息 PUT products set
  • 记一次关于MySQL分页查询的优化方案(聚集索引与非聚集索引)

    最近在工作中 有一段逻辑需要从一张大约70W数据的表中分页查询 最开始写的SQL是 SELECT FROM table name WHERE 1 1 ORDER BY time column DESC LIMIT 600000 10 查询时
  • 编译QT5.12.12版本WebEngine模块支持H264视频播放

    qt自带的QtWebEngine模块无法播放HTML5中的mp3 mp4 需要重新编译 提供编译好的下载 环境 QT5 12 12 VS2017 Python2 一 在64位windows系统下编译32位MSVC选择VS2017如下命令 右
  • Redis的五大数据类型(一)

    1 字符串类型 string 1 添加 查询 添加数据 set key value 如果key已存在 之前的value将会被覆盖 查询指定key的值 get key 127 0 0 1 6379 gt set name zhangsan O
  • XSS之xss-labs-level11

    文章目录 0x01 XSS Labs 0x02 实验工具 0x03 实验环境 0x04 实验步骤 0x05 实验分析 0x06 参考链接 0x01 XSS Labs XSS 跨站脚本攻击 是指恶意攻击者往Web页面里插入恶意Script代码
  • Java打印流

    java io Printstream 打印流 PrintStream为其他输出流添加了功能 使它们能够方便地打印各种数据值表示形式 Printstream特点 只负责数据的输出 不负责数据的读取 与其他输出流不同 Printstream永
  • Linux/Centos : gcc __attribute__关键字之visibility

    visibility用于设置动态链接库中函数的可见性 将变量或函数设置为hidden 则该符号仅在本so中可见 在其他库中则不可见 g 在编译时 可用参数 fvisibility指定所有符号的可见性 不加此参数时默认外部可见 参考man g
  • git上传文件到github

    通过git工具上传本地文件夹 1 下载git工具 2 安装 3 打开git bash exe 4 在打开的GIt Bash中输入以下命令 用户和邮箱为你github注册的账号和邮箱 git config global user name C
  • 虚拟机架云服务器,云服务器 虚拟机架设

    云服务器 虚拟机架设 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时 如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时 您需要修改网卡属性为DHCP 以使私有镜像发放的新云服务器可以动态获取IP地址 本节以Windo
  • 安卓基础之Intent的用法

    Intent的用法 意图的分类和用法 隐式意图 通过指定一组数据或者动作实现 Intent intent new Intent intent setAction intent addCatogary intent setDataAndTyp
  • cim系统 是什么_CIM和IBM i:它是什么以及它如何工作

    什么是CIM 如果您对IBM i知识不熟悉CIM 那么您来对地方了 CIM提供了一种建模和公开管理信息的标准方法 从V5R4开始 通过加载IBM通用可管理性启用 UME 许可程序 在IBM i上提供了CIM 并且在IBM i 6 1和IBM
  • JavaScript 等待 body,frame,frameset,iframe,img,link,script,style加载完成操作

    body frame frameset iframe img link script style 标签有 onload事件 通过监听以上的 onload事件 可以达到 对于标签加载完成后在做一些事情 查看图片的所有属性 以及事件 conso
  • uniapp的那些坑

    1 selectedColor不起作用 1 查看位置是否写对 与lis同级 2 是否为16进制 selectedColor写的rgb不支持 3 是否被其他样式覆盖 其他地方也设置过selectedColor 可以全局搜索一下 2 pages
  • VSCode远程连接ubuntu服务器

    1 打开VSCode 安装插件 安装插件 汉化 方法如下 重启之后界面就都是中文了 因为我之前弄过了 如果你的已经是中文了 可以省去这一步 安装remote development插件 如下图 用于远程连接服务器 安装好之后 左侧多了一个
  • 计算机视觉(CV)方向今年招聘情况怎么样?是否已经人才过剩?

    编辑 Amusi https www zhihu com question 293700785 本文仅作为学术分享 如果侵权 会删文处理 计算机视觉 CV 方向今年招聘情况怎么样 是否已经人才过剩 https www zhihu com q
  • 实验五:LINUX 下C语言使用、编译与调试实验

    实验五 LINUX 下C语言使用 编译与调试实验 一 实验目的 练习并掌握Linux提供的vi编辑器来编译C程序 学会利用gcc gdb编译 调试C程序 学会使用make工具 二 实验内容 编写C语言程序 用gcc编译并观察编译后的结果 运