Hatena::Groupprogram

lnzntのプログラミング日記 このページをアンテナに追加 RSSフィード

2012年05月03日(木)

hello.c を出力する bash 関数

13:20 | hello.c を出力する bash 関数 - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク - hello.c を出力する bash 関数 - lnzntのプログラミング日記 hello.c を出力する bash 関数 - lnzntのプログラミング日記 のブックマークコメント

01function.hello-c (私の環境でのファイル名です。ファイル名は任意です)

function hello-c {
    /bin/cat <<__HELLO_C__
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("hello, world\n");

    return EXIT_SUCCESS;
}
__HELLO_C__
}

使い方 (ディレクトリ等は環境に合わせて読み替えてください)

$ . ~/etc/profile.d/conf/bash/01function.hello-c # パスは任意
$ hello-c > hello.c
$ make hello
$ ./hello
hello, world

GNU Autotools - 最小の手順

| 12:09 | GNU Autotools - 最小の手順 - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク - GNU Autotools - 最小の手順 - lnzntのプログラミング日記 GNU Autotools - 最小の手順 - lnzntのプログラミング日記 のブックマークコメント

  1. ソースを用意 (ここでは hello.c)
  2. Makefile.am を作成
  3. configure.in を作成
  4. aclocal 実行
  5. autoconf 実行
  6. NEWS, README, AUTHORS, ChangeLog を作成(ここでは空ファイルでよい)
  7. automake --add-missing を実行

手順

$ mkdir -p ~/sandbox/hello     # 適当なディレクトリを作成
$ cd !$
$ vi hello.c
: (ファイル内容は下記)
$ vi Makefile.am
: (ファイル内容は下記)
$ vi configure.in
: (ファイル内容は下記)
$ aclocal
$ autoconf
$ touch NEWS README AUTHORS ChangeLog  # 空ファイル作成
$ automake --add-missing

これで、configure が生成される。あとは、普通にビルド

$ ./confiure && make

---

途中、autoconf でエラーが出たら、(ファイルの修正など対処の後)aclocal からやり直しましょう。

ファイルの内容

hello.c

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    ptintf("hello, world\n");

    return EXIT_SUCCESS;
}

Makefile.am

bin_PROGRAMS = hello
hello_SOURCES = hello.c

configure.in

AC_INIT(hello.c)
AM_INIT_AUTOMAKE(hello, 0.1)
AC_PROG_CC
AC_OUTPUT(Makefile)

autoscan

最初に autoscan を打つと configure.in の雛形(configure.scan)を出力してくれる。。。らしい。

$ autoscan

Ubuntu での Autotools のインストール

$ sudo apt-get install automake

。。。でいいと思います。(autoconf は依存関係によりインストールされる)

autoproject

autotools に関連するツール autoproject です。

パッケージの説明(抜粋) です。

autoproject はユーザにインタビューし、GNU プログラミングスタンダード に準じた新たなプログラムのソースパッケージを生成します。
  :
あなたは新たなプロジェクトを始める時に、ただ一度 autoproject を実行 するだけです。
autoproject はいくつか質問を行い、新しいディレクトリを 作成し、そこへ標準ファイルを格納してそれを新たなプロジェクトのために カスタマイズします。
  :

。。。こんなツールです。

autoproject と打つと、いろいろ聞いてきてプロジェクト用ディレクトリを作成してくれました。

autoproject への応答の仕方で変わるのかもしれませんが、生成された Makefile に info を作成するターゲットが含まれてました。

なので、普通に make をたたくと makeinfo コマンドが要求されました。

インストール方法は以下。

$ sudo apt-get install autoproject

$ sudo apt-get install texinfo   # makeinfo コマンド