タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

Makefileに関するsokutou-metsuのブックマーク (7)

  • SCons/Makefileを書くのに疲れた人のためのSCons - S.T.K Wiki

    SCons SConsはmakeやAntのように数多くあるビルドツールのうち一つであり、Pythonで書かれている。 ビルド設定のファイルをPythonで記述することができ、またSCons自身が依存関係解析の機能を持っているため、 makeと比べるとずっと簡単にビルド環境を構築することができる。 Hello, World的なもの 以下のような簡単なCプログラムをSConsでビルドしてみる。 hello.c 1 #include <stdio.h> 2 int main (int argc, char *argv[]) { 3 printf("Hello, World!\n"); 4 return 0; 5 } 6

  • 静的ライブラリのリンク時にundefined referenceエラーが出る(gcc)

    静的ライブラリのリンク時にundefined referenceエラーが出る(gcc) 概要 gccでリンク時にundefined referenceエラーが出る場合がある。 通常はオブジェクトやライブラリの指定忘れが原因であるが、 静的ライブラリをリンクする順番に間違いがあって出る場合もある (自分でMakefileを書く場合にこのミスをすることが多い) リンクの順番には依存性があり、あるオブジェクトが静的 ライブラリ内の関数を呼び出すときには呼び出される側の ライブラリは「後で」リンクする必要がある。 例えば foo.o が静的ライブラリ libfoo.a 内の関数を使用している、つまり foo.o → libfoo.a という依存関係があるとき、 g++ -o foo libfoo.a foo.o とするとundefined referenceエラーが出る。従って g++ -o fo

    sokutou-metsu
    sokutou-metsu 2011/06/23
    リンク時の依存関係
  • 2007-02-18

    仕組みが判ってしまえば Makefile は簡潔に書けます.$(CC) とか $@ とか $< なんて変数は使ったら負けです. 基(その1) ソースコード hoge.c から 実行形式のバイナリ hoge を生成するMakefileは,以下のように書きましょう all: hogeこれだけです.これで $ make all とすると hoge が生成されます 重要な点は,間違っても all: hoge hoge: hoge.c $(CC) hoge.c -o hogeのようなMakefileを書かないことです.このようなMakefileでは #!/bin/sh CC=gcc $CC hoge.c -o hoge というようなシェルスクリプトと同程度の使い勝手しかありません. 基(その2) ここで例えば-O3 を付けてコンパイルしたい場合や,-lm を付けてリンクしたい場合は以下のようにし

    2007-02-18
  • Makefileに関するあれこれ(1/2) - ここにタイトルを入力|

    makeが好き。 プログラミングの時はもとより動画のエンコードするのにもおもわずMakefileかいちゃうぐらいmakeが好き。 まぁ、それ以上にvimが好きなんだけどね。 ということでMakefileのあれこれ。 メモ書き〜〆(д) とりあえずメモ代わりに、コンマ,空白の扱い comma:= , empty:= space:= $(empty) $(empty) foo:= a b c bar:= $(subst $(space),$(empty),$(foo)) # bar == "a,b,c" info Makefile に書いてあることそのまんまなんだけどね 具体例とか。 とりあえず授業とか1ファイル1バイナリなものをテキトーにmakeするMakefile SRCS=$(wildcard *.c) BINS=$(patsubst %.c,%,$(SRCS)) all: $(BINS

    Makefileに関するあれこれ(1/2) - ここにタイトルを入力|
  • Make と Makefile の説明

    まだ完成途中です back 注意: このページの内容には、おそらく多くの間違いがあります。 リンクされているので残しておきますが、利用には注意してください。(2008年3月、新山) ここではおもに make の使い方 と Makefile の書き方について 説明しています。じつは make の種類にはいろいろあり、ここでは GNU make (gmake というコマンド名のこともある) を 対象にしています (BSD の pmake でも基的な部分は同じですが、 マクロ定義などは違うところもあるので注意してください)。 わかりにくい箇所とか、まちがってる箇所がある場合はメールください。 Contents make はどんなときに使うか Makefile を作る make の実行 Makefile の文法リファレンス 多段 make について (未完成) Makefile の例 (未完成)

  • Makefileの書き方 - スキルアップ輪講

    makeって何? † ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の無駄です。 そんな問題を解決するのがmakeです。Makefileと呼ばれるテキストファイルに必要なファイルと各ファイルのコンパイルのコマンド、ファイル間の依存関係を記します。そして、“make”というコマンドを実行するだけで、自動的にコマンドを実行してコンパイルしてくれます。これだけではスクリプトと大差がないのですが、makeはMakefileに記された依存関係に基づいて更新されたファイルの内関連のあるものだけを更新することで、コンパイル時間を短くします。 makeは特定のプログラミング言語に依存したものではありません。C言語のソースファイルのコンパイルにも使えますし、Verilog-HDL

  • C++のための即席Makefile - 簡潔なQ

    最低限だけ書くと次のようになる。 CXXFLAGS = -O2 -Wall LDFLAGS = -lm all: hello # In Windows, it may be "hello.exe" clean: $(RM) hello CXXFLAGSは、C++コンパイラに対する引数。Cコンパイラに対する引数はCFLAGS。最適化や警告、インクルードディレクトリや準拠する標準仕様の設定などを書く。 ここでは最適化オプション-O2と警告オプション-Wallをつけている。 LDFLAGSは、リンカに対する引数。ライブラリディレクトリやリンクしたいライブラリを書く。 ここではmath.hを使うため、-lmをつけてlibm.aをリンクしている。 allは、デフォルトで実行されるターゲット(といってもallという名前だからではなく、先頭にあるからだが)。ここでは実行ファイルhelloをビルドしている

    C++のための即席Makefile - 簡潔なQ
  • 1