ビルド・実行

ビルドと実行方法。

Awk

コマンドラインで実行

$ awk 'BEGIN { print "Hello, world!" }'

コマンドでスクリプト実行

スクリプトファイル : hello.awk

BEGIN {
	print "Hello, world!"
}

実行

$ awk -f hello.awk

shebang 直接

スクリプトファイル : hello.awk

#!/bin/awk -f
BEGIN {
	print "Hello, world!"
}

実行属性設定、実行。

$ chmod +x hello.awk
$ ./hello.awk
Hello, world!

メニューに戻る

C言語

ソースコード例

直接 コンパイラにて

四例。

$ cc main.c sub.c  # コンパイルして、リンク結果を a.out へ
$ ./a.out          # 実行
$ cc -o sample main.c sub.c  # リンク結果ファイルを指定
$ ./sample                   # 実行
$ cc -c main.c sub.c  # コンパイル。オブジェクトファイル main.o, sub.o ができる。
$ cc main.o sub.o     # リンク結果を a.out へ
$ ./a.out             # 実行
$ cc -c main.c     # コンパイル。オブジェクトファイル main.o ができる。
$ cc main.o sub.c  # sub.c をコンパイルし、リンク結果を a.out へ
$ ./a.out          # 実行

make にて

以下の内容で Makefile というファイルを作る。

OBJS = main.o sub.o
EXE = sample
CFLAGS = -g
LDFLAGS = -g "str"

$(EXE) : $(OBJS)
	$(CC) -o $(EXE) $(LDFLAGS) $?

最初の四行は変数に定義。最後の二行は「$(EXE) を作るには $(OBJS) が必要で、$(EXE) の作り方は $(CC) -o $(EXE) ...」という意味。

make は C に関するルールをいくつか知っていて、$(CC) は定義しなくても使えるし、main.o を作る(コンパイルする)には main.c が必要であることやその作り方も知っているので、これらは記述しなくて良い。make が知っているコンパイル方法はコンパイルオプションに $(CFLAGS) を使うことになっているので、ここで三行目の定義が使われる。

さらには、単一ソースファイルでは Makefile 不要で、以下のようにできる。この時、カレントディレクトリに上の Makefile があれば、CFLAGS と LDFLAGS が使われてデバッグ情報付きでコンパイル・リンクされる。

$ make main  # main.c をコンパイルして、リンク結果を main へ
$ ./main     # 実行

メニューに戻る

Java

ソースコード例

直接 コンパイラにて

package の無いソースの場合。*.java は列挙できる。

$ javac Sample.java  # Sample.java をコンパイルして、Sample.class へ
$ java Sample        # 実行

package がある場合は class ファイルは package 階層と一致したディレクトリにある必要がある。

$ javac Sample.java            # *.java をコンパイルして、*.class へ
$ mkdir -p classes/pkg         # *.class を置くディレクトリ作成
$ mv Sample.class classes/pkg  # package に従った位置に *.class を置く
$ java -cp classes pkg.Sample  # 実行
$ mkdir classes                 # *.class を置くディレクトリ作成
$ javac -d classes Sample.java  # *.java をコンパイルして、*.class へ
$ java -cp classes pkg.Sample   # 実行

ant にて

Java のソースは package 階層と一致したディレクトリに置く慣習がある。この場合 make をうまく使うことはできないので、ant を使う。

以下の例はほぼ最小の形で、property の value を変えることで広く利用できる。

<?xml version="1.0" encoding="utf-8"?>
<project default="exec">    
 <property name="class" value="Sample"/>    
 <property name="src" value="srcs"/>        
 <property name="classes" value="classes"/> 

 <target name="dir">
  <mkdir dir="${classes}"/>
 </target>

 <target name="compile" depends="dir">     
  <javac srcdir="${src}" destdir="${classes}"/>
 </target>

 <target name="exec" depends="compile">     
  <java classpath="${classes}" classname="${class}" fork="true"/>
 </target>
</project>

ant コマンドで、実行まで全部行われる。

$ ant
Buildfile: build.xml

dir:
    [mkdir] Created dir: /home/dag/sample/classes

compile:
    [javac] Compiling 1 source file to /home/dag/sample/classes

exec:
     [java] 実行結果
     [java] ...

BUILD SUCCESSFUL
Total time: 3 seconds

メニューに戻る

Python

コマンドラインで実行

$ python -c 'print "Hello, world!"'

コマンドでスクリプト実行

スクリプトファイル : hello.py

print "Hello, world!"

実行

$ python hello.py

shebang 直接

スクリプトファイル : hello.py

#!/usr/bin/python
print "Hello, world!"

実行属性設定、実行。

$ chmod +x hello.py
$ ./hello.py
Hello, world!

shebang 間接

スクリプトファイル : hello.py

#!/usr/bin/env python
print "Hello, world!"

実行属性設定、実行。

$ chmod +x hello.py
$ ./hello.py
Hello, world!

メニューに戻る

Ruby

コマンドラインで実行

$ ruby -e 'puts "Hello, world!"'

コマンドでスクリプト実行

スクリプトファイル : hello.rb

puts "Hello, world!"

実行

$ ruby hello.rb

shebang 直接

スクリプトファイル : hello.rb

#!/usr/bin/ruby
puts "Hello, world!"

実行属性設定、実行。

$ chmod +x hello.rb
$ ./hello.rb
Hello, world!

shebang 間接

スクリプトファイル : hello.rb

#!/usr/bin/env ruby
puts "Hello, world!"

実行属性設定、実行。

$ chmod +x hello.rb
$ ./hello.rb
Hello, world!

メニューに戻る

Shell

コマンドラインで実行

$ sh -c 'echo "Hello, world!"'

コマンドでスクリプト実行

スクリプトファイル : hello.sh

echo "Hello, world!"

実行

$ sh hello.sh

shebang 直接

スクリプトファイル : hello.sh

#!/bin/sh
echo "Hello, world!"

実行属性設定、実行。

$ chmod +x hello.sh
$ ./hello.sh
Hello, world!

メニューに戻る