linux系统c语言编译icpc,ACM-ICPC 比赛环境的使用
ACM-ICPC 现场赛不同的赛站可能比赛环境不同,不过一般都是 Ubuntu 系统。附带的软件可能略有不同,可能会有使用习惯的差异导致效率下降或者无法运行代码,但是在终端下编译运行代码都是相同的。本篇博客介绍的是在终端下如何编辑代码、编译代码、运行代码以及调试代码。
编辑代码
当然是 vim 神器了。vim 的学习曲线挺大的,不过掌握基本的使用还是没有问题的,可能一开始离开鼠标效率会不高,但是一旦熟悉了以后效率可能会比使用鼠标高。
这里介绍 vim 最基本的用法。
首先新建文件:
vim test.cpp
文件保存在当前目录下。
后缀名是你想要的语言:.c .cpp .java .py
vim 有三种模式:普通模式 (normal)、插入模式 (insert)、可视模式 (visual)。
一开始进入的就是普通模式,或者按下 Esc 键进入普通模式。普通模式就是替代其他编辑器日常使用鼠标的部分。
普通模式下一般输入命令,所以不能乱按键盘(基本每个键都是命令)。
普通模式下可以用 hjkl 代替方向键,分别代表左下上右 (当然还是直接用方向键最舒服)。
普通模式下按 u 可以撤销,撤销上一次对文本的更改。按 x 可以删除光标后的一个字符,按 dd 可以删除整行。
普通模式下输入 : 最下方就会输出命令框,可以输入命令。最常用的当然是保存和退出。保存是 :w,退出是 :q,强制退出是 q! (也就是修改后未保存直接退出))。可以叠加命令,也就是保存退出是 :wq。还可以增加一些配置,比如显示行号::set number。但是这样配置退出 vim 后就没了。配置信息可以写在名为 .vimrc 的文件中保存下来。一般保存在 ~/ 目录下 (用户目录),只对某个用户有效。全局配置一般在 /etc/vim/vimrc 或者 /etc/vimrc,对所有用户有效。
这里推荐这篇 模板 的 vim 配置。
普通模式按下 i 键进入插入模式,插入模式下可以正常编辑代码。
普通模式按下 v 键进入可视模式,可以批量选择代码,最常用的就是批量选择代码,然后按 d 删除。
编译代码与运行代码
C
C语言直接使用 gcc 编译就行。
假设要编译的文件名为 test.c
最常用的语句就是:
gcc test.c -o test
最后 test 为可执行程序的文件名,如果不加默认生成 a.out。
加个 -g 可以调试。
gcc test.c -o test -g
加 -Wall 输出所有警告信息。
加 -O2 开 O2 优化
gcc 其他参数挺多的,不过比赛中不常用。
运行的话直接 ./test 就可以了。
假设同一目录下有 test.in。
可以使用如下命令对输入重定向:
./test < ./test.in
也可以对输出重定向:
./test > ./test.out
输出内容存入文件 test.out。
可以一起使用:
./test < ./test.in > ./test.out
这样就不用加什么 freopen 之类的文件操作函数了,有时候提交时忘了删除就直接 WA 了。
C++
C++ 使用 g++ 编译。与 gcc 很相似。
假设要编译的文件名为 test.cpp
g++ test.cpp -o test
-g、-Wall、-O2 参数作用与 gcc 一样。
运行的话与 C语言部分一样。
Java
假设要编译的文件为 test.java (注意主类的名字要和文件名一致)
javac test.java
在同一目录下会生成 test.class。
然后用以下命令运行:
java test
注意不要加 .class
Python
Python 是解释型语言,直接运行就可以了。
假设要运行的文件为 test.py
用 Python2 运行:
python test.py
用 Python3 运行:
python3 test.py
当然目前很多赛站不支持 Python。
如果想要更方便的编译运行,可以写一些 Shell 脚本。
调试代码
这里只讲用 gdb 调试 C++ 程序。
前提是编译时加了 -g 参数。
假设要调试的代码为 test.cpp
先编译:
g++ test.cpp -o test -g
运行一下命令进入调试:
gdb test
输入 l 显示主函数所在的代码部分。
l 后面可以加数字,表示显示的行号。
也可以加函数名。
输入 b 10 在第 10 行设置断点。
输入 delete 10 删除第 10 行的断点。
输入 r 运行。
输入 n 单步跟踪。
输入 c 执行到下一个断点处。
输入 print x 输出 x 变量的值。
输入 display x 每次单步执行都输出 x 变量的值。
输入 q 退出 gdb。
还可以用 gdb -tui 进入更好看的 gdb。
linux系统c语言编译icpc,ACM-ICPC 比赛环境的使用相关推荐
- linux系统c 如何使用教程,基于Linux操作系统的C语言编译和调试方法解析
摘 要:文章先介绍了GCC编译器相关内容,包括GCC编译程序和GCC编译选项,随后介绍了GDB调试程序相关内容,包括GDB具体操作和GDB基础命令,最后介绍了C语言编写中的注意事项,希望能给相关人士提 ...
- Linux系统C语言遍历系统文件系统,并查询其磁盘使用率(有效磁盘)
getmntent_r接口示例程序地址:https://github.com/Rtoax/test/tree/master/c/glibc/mntent statfs 接口示例程序地址: ...
- linux 系统 Shell语言 基础
linux 系统 Shell语言 基础 第一章 Shell 编程 1 . 概述 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Sh ...
- AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用
拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...
- linux c 串口 调用命令,Linux系统C语言串口收发
Linux系统C语言串口收发 Linux系统对串口提供了很好的支持,使我们很容易就能用C语言编写出串口收发程序. 先简单说明一下编写串口收发程序前的准备工作.首先串口收发需要有硬件上的串口,在Linu ...
- linux系统c语言并发测试http协议post请求
linux系统c语言并发测试http协议post请求 特殊场景,工作中遇到的. 有一个http服务端需要并发测试接口处理能力. 之前开发过程中测试都是用的postman 面对高并发模拟,postman ...
- Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”
Linux系统下GCC编译错误:"undefined reference to 'sqrt'",解决方法:-lm 数学函数sqrt()位于libm.so库文件中(这些库文件通常位于 ...
- Q106:Linux系统下安装编译PBRT-V3
106.0 引入 本人之前尝试过在windows系统中编译pbrt-v3,但是出现了很多错误.pbrt-v3的源代码中部分Linux的函数没有用宏包好,而是直接使用,所以在windows环境下就报错了 ...
- 在linux系统下如何编译运行C语言程序和C++程序
文章目录 1:linux系统下编译运行C程序 2:linux系统下编译C++程序 1:linux系统下编译运行C程序 gcc -o a a.c gcc -o 想要的文件名 文件的名字.c 2:linu ...
- linux系统C语言学习总结
引言 尽管 C 语言问世已近 30 年,但它的魅力仍未减退.C 语言继续吸引着众多的开发者,他们为了编写.移植或维护应用程序而必须学习新技能. 本文是为了满足对C语言初学者或想提高自身C语言修为的开发 ...
最新文章
- 基于Proteus的计算器仿真
- MySQL 5.7安装(linux)
- 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国
- java 对象流_java 对象流的简单使用
- redis笔记_源码_简单动态字符串SDS
- paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结
- java时间加减_java时间加减
- 练手级计算机,快来打怪
- unix域套接字UDP网络编程
- 高等数学复习要点(期末考试同济版)
- 第三方接口开发(短信验证码)
- 微信中扫一扫二维码唤起手机默认浏览器的实现方式
- python基础-猜数字游戏
- 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场
- 键盘没有小键盘怎么办?怎么打开屏幕软键盘?
- IDEA快捷键 进行查找和批量替换
- c语言五子棋如何添加计时,五子棋教程:计时
- 天气预报技术这些年有没有发展?什么时候才能准一点?
- centos下安装anaconda、scikit-learn、opencv、pytorch 和torchvision(文件在Windows下载好linux版本,使用xshll传到linux)
- 太阳神电商业务辅助工具1.5
热门文章
- PHP专家陪练营试听课程下载
- 10分钟快速配置LAMP环境
- [转] NOI, NOIP, IOI, ACM
- win2K/win2003终端服务器超出最大允许连接数解决之道全攻略
- c语言文件夹换行打印,关于文件操作,碰到空格就换行
- ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
- ubuntu下有没有类似于imagewatch的软件_大家有没有什么好的app推荐下,学习的类似timing小众点的?...
- 拓端tecdat|R语言分解商业周期时间序列数据:线性滤波器、HP滤波器、Baxter King滤波器、Beveridge Nelson分解等去趋势方法
- 拓端tecdat|R语言计量经济学与有时间序列模式的机器学习预测
- 拓端tecdat|游记数据感知旅游目的地形象