Ubuntu系统下初编译_ubuntu编译-程序员宅基地

技术标签: ubuntu  

一、 Ubuntu系统下软件的在线查找和安装

在ubuntu下打开终端
输入 sudo apt-get install vim安装vim编辑器
sudo apt-get install gcc安装gcc编译器
注意:在安装软件包时如果出现Could not get lock /var/lib/dpkg/lock-frontend,经多种方法试验后,解决方法如下:
在这里插入图片描述从应用程序菜单中打开软件和更新

在这里插入图片描述
打开后,将其更改为立即显示(display immediately),它便不会在后台运行sudo apt-get upgrade命令。
然后输入用户密码以让更改生效。重新启动Ubuntu计算机即可。

二、在Ubuntu系统下用C语言编写一个程序

1.输入vim hello.c创建hello.c C语言文件
2.进入编辑界面输入代码

#include<stdio.h>
int main()
{
    
	printf(hello world\n);
	return 0;
}

3.完成代码后,按下Esc键,再输入:wq保存文件
4.在命令窗口输入gcc hello.c -o hello进行编译
5.在命令窗口输入./hello运行程序

在这里插入图片描述

三、 分别在Ubuntu系统和windows系统编译并运行

(一)在Ubuntu系统用gcc 命令行方式编译

用相同的方法分别创建,编译main1.c程序和一个sub1.h子函数`
main1.c

#include<stdio.h>
#include"sub1.h"
int main()
{
    
	int a,b;
	float y;
	a=2,b=4;             //定义x和y变量
	y=x2x(a,b);          //输出处理后的值
	printf("%f",y);
	return 0;
}

sub1.h子函数

#include<stdio.h>
float x2x(int a,int b)
{
    
	float x;
	x=a+b;
	return x;     //返回运算后的值
}

在命令窗口输入./main1运行程序
如上所示
得出结果。

(二)在windows系统用Dev-C++编译

在这里插入图片描述

四、 在Ubuntu系统下用Makefile方式编程主程序

1、在命令窗口输入 gedit makefile创建makefile文件。
2、编写文件并保存

在这里插入图片描述
3、在命令行窗口输入make
4、输入gcc main1.o -o main进行编译
5、输入./main查看运行结果,结果相同
在这里插入图片描述
6、执行完后输入 make clean 清除编译产生的目标文件(.o)
注意:Makefile的命令行,开头必须用tab键,用空格会引起编码格式错误,系统报错。

五、总结

(1)gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.
(2)gcc是编译一个文件,make是编译多个源文件的工程文件的工具。
make是一个命令工具,是一个解释makefile中指令的命令工具。
(3)make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。输入文件主要用来记录文件之间的依赖关系和命令执行顺序。
(4)gcc是编译工具;make是定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译;
也就是说make是调用gcc的。

经过初步对Ubuntu,gcc直接编译和Makefile进行编译方式的练习,我学习到了gcc对C语言的编译流程,也了解到了gcc,Makefile二者的联系与区别。gcc 和 makefile 方式都可生成可执行文件,但当编译文件较多、需要经常维护等等时,makefile 方式更具有优势。经过不断的试错修改,注意到了很多细节,也加深了对C语言源程序编译成可执行文件过程的理解。

参考:
https://cloud.tencent.com/developer/article/1343055
https://blog.csdn.net/qq_45237293/article/details/108741893

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mosifan/article/details/120276383

智能推荐

动态路由协议之OSPF基本原理、区域划分及配置_ospf区域-程序员宅基地

文章浏览阅读9.4k次,点赞6次,收藏29次。什么是OSPF? OSPF是我们平时使用最多的一种链路状态协议,其实OSPF协议可以视为是为了解决距离矢量协议所出现的一些系列问题而出现的(距离矢量协议RIP协议收敛慢、最大跳数为15跳、易产生环路) 1、区域划分 OSPF是可以支持单区域也可以支持多区域的,有一个非常好的功能就是它可以把一个网络划分为各个区域,多区域划分中就包括骨干区域area 0和其它普通区域。要注意的是,在OSPF的多区域网络中,所有的区域之间的通信都需要通过骨干区域..._ospf区域

十六进制颜色值和ARGB颜色值的转换_十六进制argb-程序员宅基地

文章浏览阅读2.9k次。#include typedef struct ARGB{int alpha;int red;int green;int blue;}color, *pcolor;//将十六进制转化为ARGBcolor hex_to_argb( int colo_十六进制argb

vs2017 Nuget无法连接到远程服务器_.net core nuget无法连接到远程服务器-程序员宅基地

文章浏览阅读1.4k次。Nuget无法连接到远程服务器解决办法:找到ie浏览器选择internet选项还原高级设置最后重启一下电脑就解决问题了_.net core nuget无法连接到远程服务器

vscode上配置Arduino遇到Select the main sketch file问题_为什么arduino保存的`.ino`文件必须位于相同名称的文件夹中才能打开?-程序员宅基地

文章浏览阅读899次。在arduino上保存一个ino文件,必须将它放在一个同名文件夹中,就算你不放,下次用arduino打开还是会生成一个这样的文件夹。在vscode中,每次upload,都让我选一个sketch,而且选项只有ino文件,也不懂是什么意思。而且,选了一个之后就不能再运行其他的ino文件了。最终,我在https://github.com/czgtest/vscode-arduino中,发现:也就是说,vscode下运行每个ino的文件都要一个在一个专有的文件夹下,带着专有的arduino.json文件运行。_为什么arduino保存的`.ino`文件必须位于相同名称的文件夹中才能打开?

开源短剧播放小程序,带完整搭建教程_短剧小程序 开源-程序员宅基地

文章浏览阅读728次。大家好啊,罗峰又老给大家分享好用的小程序了。大家都喜欢看短剧吧,相比传统网剧冗长的剧情,微短剧最大的看点,是时长短、高浓缩,顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头,但却非常“上头”的虚构内容。_短剧小程序 开源

如何让健康成为生活的重要组成部分?这份指南教你享受健康生活!_健康应用程序如何成为现代人生活的重要组成部分-程序员宅基地

文章浏览阅读177次。如何有效果地保持终生健康:全网最全面实用易懂的健康指南,内含具体贴心细节不容错过_健康应用程序如何成为现代人生活的重要组成部分

随便推点

sqlmap 使用手册--推荐_sqlmap 检测地址带多个参数-程序员宅基地

文章浏览阅读2.9k次。转载:https://blog.csdn.net/wn314/article/details/78872828零、前言Sqlmap是十分著名的、自动化的SQL注入工具。为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文。由于我英语学得很差,所以翻译地不好。基本上是意译,还加入了我自己的东西,和原文有较大差距。首发于我的独立博客:https://blog.werne..._sqlmap 检测地址带多个参数

大型转码连续剧之——辣条自学Python勇闯数据科学(一)前期准备与理解编程-程序员宅基地

文章浏览阅读747次,点赞23次,收藏12次。各位大佬好,欢迎收看大型转码连续剧之——的第一集。首先做个自我介绍,辣条是一个刚从经济学转码来的菜鸟,也刚开始在CSDN平台上发帖。这不今年9月准备去读个硕,去年刚本科毕业的辣条得提前学点儿数据科学相关的知识。和ChatGPT聊了聊,这哥们儿建议辣条学个以提升专业技能,那咱就好好学一下。这Gap Year也算是给自己找了个事儿干,学点干货,笔记记在这儿。

慕课哈工大C语言程序设计精髓(第5周练兵区)_判断一个整型数据有几位v2.0 从键盘输入一个整型数据(int型),用switch语句和循环-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏8次。1判断一个整型数据有几位v2.0(4分)从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。程序运行结果示例1:Please enter the number:1222612226: 5 bits1: 12: 36: 1程序运行结果示例2:Please ent..._判断一个整型数据有几位v2.0 从键盘输入一个整型数据(int型),用switch语句和循环

Scrapy 安装介绍以及基本操作_怎么安装scrapy无pip-程序员宅基地

文章浏览阅读6.2w次,点赞38次,收藏179次。在写之前我们先来了解一下什么是Scrapy?Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不..._怎么安装scrapy无pip

Linux下九个实用脚本_linux脚本-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏6次。root@ansible ~]# watch -n 1 sh sd.sh 加上watch -n 1 来判断网卡实时流量。if [ "$RT" -gt 250 ] 限定次数250 超过就屏蔽。echo "网站$URL坏掉,请及时处理"echo "网站高危$URL"echo "磁盘已经沾满不能存储数据!echo "$name 创建成功"echo "$name 创建成功"echo "等待磁盘IO响应使用率: $LL"不过要退出 watch 才会使IP屏蔽。_linux脚本

【Bug解决】ImportError: C extension: No module named ‘pandas._libs.tslibs.base‘ not built._importerror: c extension: none not built. if you w-程序员宅基地

文章浏览阅读4.3k次,点赞6次,收藏11次。问题描述笔者用Pyinstaller打包成exe文件,在其他电脑端运行时出现如下问题ImportError: C extension: No module named 'pandas._libs.tslibs.base' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --force' to build the C exten_importerror: c extension: none not built. if you want to import pandas from