作者kevin695 (KG and C's)
看板ECClab
标题Re: filename.out
时间Sat Aug 2 00:35:52 2008
※ 引述《vbspare (vb)》之铭言:
: gcc -o outputname.out filename.cpp
: 产生执行档名称,就不会全部都是 a.out 了 >"<
a.out也可以下指令改档名啊~
%mv a.out b.spare //把a.out重新命名为b.spare
之前写一半的东西,现在拿来好了:
How to extract/run c/c++ programs on workstation @kevin
//-------------------------------------------------part 1
I.Linux下gcc的command line指令
1.第一步当然是由source code来linke出执行档(若不命名预设为a.out):
情况: source code: c1.c、执行档(要产生的):c1.exe
%gcc c1.c -o c1.exe -lm -O2
其中参数的作用:
-o为指定执行档名,不然会直接产生出a.out的执行档
-O2为最耗时的编译方式,也可以是-O1或者-O,不过通常编译比起程式
执行时间是天海一隙。还是用2来最佳化会跑最快。
2.跑执行档
我一步步解释越来越花俏的指令方式,你也可以直接看最下面的用就好
i.最原始的方式
%./c1.exe
加./只是代表你要执行的档案和你的pwd(现在所在目录)位置相同
ii.背景执行
%./c1.exe &
最後面加了&就是背景执行的意思。
这样子你只要敲enter就会回到command line,程式会在背景执行。你可以
继续做自己的事情。只有在程式有print screen动作时会来乱一下。
iii.背景执行+将显示画面存到c1.log
%./c1.exe | tee c1.log &
其中c1.log是你想产生的档名,会纪录所有你萤幕上显示的东西。
iv.背景执行+登出後继续执行
%nohup ./c1.exe &
这种的应该也蛮常用的,nohup详细的运作方式很容易goo的到。简单说就是
你帐号登出之後,还会继续跑程式。你再登入时如果还未结束,用top就会
看到(用ps会看不到)
v.背景执行+登出後继续执行+将显示画面存到c1.log
%nohup ./c1.exe | tee c1.log &
//-------------------------------------------------part 2
II.写Makefile一劳永逸
这方式只在unix系统下能work,相当的方便!简单说就是把上面的复杂指令
写成script,你根本不必记什麽指令,因为以後都用不到了。
档名就是Makefile,没有副档名。放置在与你程式相同的资料夹,严谨的说
法是你make指令下的位置。
由於Makefile功能相当的强大,尤其写系统程式的甚至Makiefile会比原始
程式还要复杂许多。但我们只用了很基本的部份,有兴趣进阶的可以goo一下
manual来看看。
要注意的地方,通常会有error也是这些地方出错:
1.使用#符号来注解,为单行注解
2.tab不能乱用,但又有时候一定得用,如下
gen1:
gcc $(CODE1) -o $(EXE1) -lm -O2
<------> 这部份是tab
范例档在/home/lab521/底下,叫做Makefile_gold。有需要的话可以复制到
自己的执行目录底下,再修改i/o的档名即可。注意档名也要改成Makefile
在本范例中,可以容易看出来能无限延伸下去。自己复制贴上再改改就好!
例如:有两支.cpp档要上工作站跑,那就是把Makefile改好後.....
%make gen1 // compile
%make gen2
%make sim1 // execute
%make sim2
ps. 如有用到c++的函式库,把gcc替换成g++,其余都同样道理。
--
┌┐ ─┌┐── ┌┐ ┌ ┌──┐ ┌┐ ─
││ ╱ ││ ││ │ └┐┌┘ ││ │
││╱ ││── ││ │ ││ ││\ │
││\ ││ ╲╲╱ ┌┘└┐ ││ │
└┘ ─ └┘── └┘ └──┘ └┘ ─
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.76.7
1F:推 ronny0423:推一下~精辟的讲解 140.114.224.61 08/02 02:08
2F:推 gggga:厉害 你都在哪里学的 140.114.206.17 08/02 03:24
3F:推 Ben236:真厉害 推一下~~ 140.114.15.165 08/02 09:58
4F:推 vbspare:推一下 ^^ 140.114.15.160 08/04 09:28