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 比赛环境的使用相关推荐

  1. linux系统c 如何使用教程,基于Linux操作系统的C语言编译和调试方法解析

    摘 要:文章先介绍了GCC编译器相关内容,包括GCC编译程序和GCC编译选项,随后介绍了GDB调试程序相关内容,包括GDB具体操作和GDB基础命令,最后介绍了C语言编写中的注意事项,希望能给相关人士提 ...

  2. Linux系统C语言遍历系统文件系统,并查询其磁盘使用率(有效磁盘)

    getmntent_r接口示例程序地址:https://github.com/Rtoax/test/tree/master/c/glibc/mntent statfs 接口示例程序地址​​​​​​​: ...

  3. linux 系统 Shell语言 基础

    linux 系统 Shell语言 基础 第一章 Shell 编程 1 . 概述 ​ Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Sh ...

  4. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  5. linux c 串口 调用命令,Linux系统C语言串口收发

    Linux系统C语言串口收发 Linux系统对串口提供了很好的支持,使我们很容易就能用C语言编写出串口收发程序. 先简单说明一下编写串口收发程序前的准备工作.首先串口收发需要有硬件上的串口,在Linu ...

  6. linux系统c语言并发测试http协议post请求

    linux系统c语言并发测试http协议post请求 特殊场景,工作中遇到的. 有一个http服务端需要并发测试接口处理能力. 之前开发过程中测试都是用的postman 面对高并发模拟,postman ...

  7. Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”

    Linux系统下GCC编译错误:"undefined reference to 'sqrt'",解决方法:-lm 数学函数sqrt()位于libm.so库文件中(这些库文件通常位于 ...

  8. Q106:Linux系统下安装编译PBRT-V3

    106.0 引入 本人之前尝试过在windows系统中编译pbrt-v3,但是出现了很多错误.pbrt-v3的源代码中部分Linux的函数没有用宏包好,而是直接使用,所以在windows环境下就报错了 ...

  9. 在linux系统下如何编译运行C语言程序和C++程序

    文章目录 1:linux系统下编译运行C程序 2:linux系统下编译C++程序 1:linux系统下编译运行C程序 gcc -o a a.c gcc -o 想要的文件名 文件的名字.c 2:linu ...

  10. linux系统C语言学习总结

    引言 尽管 C 语言问世已近 30 年,但它的魅力仍未减退.C 语言继续吸引着众多的开发者,他们为了编写.移植或维护应用程序而必须学习新技能. 本文是为了满足对C语言初学者或想提高自身C语言修为的开发 ...

最新文章

  1. 基于Proteus的计算器仿真
  2. MySQL 5.7安装(linux)
  3. 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国
  4. java 对象流_java 对象流的简单使用
  5. redis笔记_源码_简单动态字符串SDS
  6. paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结
  7. java时间加减_java时间加减
  8. 练手级计算机,快来打怪
  9. unix域套接字UDP网络编程
  10. 高等数学复习要点(期末考试同济版)
  11. 第三方接口开发(短信验证码)
  12. 微信中扫一扫二维码唤起手机默认浏览器的实现方式
  13. python基础-猜数字游戏
  14. 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场
  15. 键盘没有小键盘怎么办?怎么打开屏幕软键盘?
  16. IDEA快捷键 进行查找和批量替换
  17. c语言五子棋如何添加计时,五子棋教程:计时
  18. 天气预报技术这些年有没有发展?什么时候才能准一点?
  19. centos下安装anaconda、scikit-learn、opencv、pytorch 和torchvision(文件在Windows下载好linux版本,使用xshll传到linux)
  20. 太阳神电商业务辅助工具1.5

热门文章

  1. PHP专家陪练营试听课程下载
  2. 10分钟快速配置LAMP环境
  3. [转] NOI, NOIP, IOI, ACM
  4. win2K/win2003终端服务器超出最大允许连接数解决之道全攻略
  5. c语言文件夹换行打印,关于文件操作,碰到空格就换行
  6. ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
  7. ubuntu下有没有类似于imagewatch的软件_大家有没有什么好的app推荐下,学习的类似timing小众点的?...
  8. 拓端tecdat|R语言分解商业周期时间序列数据:线性滤波器、HP滤波器、Baxter King滤波器、Beveridge Nelson分解等去趋势方法
  9. 拓端tecdat|R语言计量经济学与有时间序列模式的机器学习预测
  10. 拓端tecdat|游记数据感知旅游目的地形象