タグ

gccとcに関するmikurassのブックマーク (10)

  • Shared Object(.so)の勉強 - ぱせらんメモ

    いつの間にかはてなダイアリー市民になっていた。 立ち上げが去年の10月だったので1年以上かかったことになる。おせぇ。月に多くて5エントリぐらいだしな。 30日に1回は書いてないと剥奪されてしまうらしいので頑張って書いてみるぜ。 普段はPHPでWebシステムの開発をしているというのに、突然.soな共有ライブラリを扱った仕事が舞い込んできたのでお勉強。 C/C++自体はDOSやWindowsでよくやっていたのだがLinux上での開発は初めてだ。 WinMain()から始まってメッセージループがあってWindows API使いまくり、みたいな開発は得意だがLinuxはさっぱりわからん。 同じ言語でも土俵が違うだけで結構辛い戦いが予想される。ていうか、OSの違い以前にGUIとCUI(今回はCUIどころかアプリでもない)ってだけでも全然違うのに、「C言語できるんでしょ?」みたいなのはやめてほしい。

    Shared Object(.so)の勉強 - ぱせらんメモ
  • ライブラリの基礎知識

    2000.03.11 初版 ライブラリは、再利用を目的として作成されたコンパイル済みの関数の集合です。 linux以外のOS別 Shared Library の構築・使用ガイドは、 http://www.dais.is.tohoku.ac.jp/~kabe/vsd/dynald.htmlへどうぞ。 ライブラリの名前の先頭は、lib から始まります。Linux のライブラリには次の3種類あります。 スタティック 共有 ダイナミック スタティックライブラリは、コンパイル時にコードがプログラムに組込まれます。 モジュールサイズが大きくなりますが、別のマシンにバイナリで配布したときに そのライブラリがなくても動作します。 .a で終わるファイルです。 共有ライブラリは、プログラムの実行時にロードされます。マシンによっては、 その共有ライブラリがなかったり、バージョンが違ったりして、動作しないことが

  • Make の基本

    メイクファイルの名称 メイクファイルの書式 ターゲット、依存ファイル、コマンド行 コメント 継続行 複数の依存ファイル 複数のコマンド行 Make の基は、 「あるファイルが修正されたときに自動的に必要な作業を再実行させる」 ことにあります。 その再実行のためのルールを記述しているのがメイクファイルです。 ここでは、メイクファイルの名称と、その簡単な記述例を見てみます。 メイクファイルの名称 Make は「メイクファイル」に記述されたルールにしたがって動作します。 メイクファイルの名前は普通は「makefile」または「Makefile」です。 これ以外のファイルをメイクファイルにしている場合は、 コマンドラインからメイクファイル名を陽に指定しなければなりません。 よって、メイクファイル名が「makefile」または「Makefile」ならば、 単に $ make として実行することがで

  • UNIX/Linuxプログラミング:make入門

    ※書いてあることの保障はしません。 MAKE入門 プログラミングを初めて暫くすると、ソースファイルが長くなってきたりして使いづらくなってきます。そのような時、たいていは、いくつかのソースに分割して、それらをつなげて(リンクするといいます)使うことが多いのではないでしょうか? しかし、今度はそのうちコンパイルのとき、毎回すごい長さのコマンドを打たなくてはならなくなってしまいます。しかも、いくつもプログラムをつくっていくうちにどのファイルをリンクしなければならないのか、わからなくなったりして大混乱状態に陥り兼ねません。 コンパイルの例 gcc -g -o main.o main.c gcc -g -o sub.o sub.c gcc -g -o func.o func.c gcc -g -o program main.o sub.o func.o こんなことになってきたら、Makeをつかってソ

  • 1. ガイド — OMakeマニュアル 日本語訳

    1. ガイド¶ あなたがOMakeを始めて使うのであれば、 2. OMakeクイックスタートガイド はどのようにプロジェクトを始めるべきなのかについて、簡単に説明してくれるでしょう。 3. OMakeビルドサンプル ではプロジェクトをビルドするための、より詳細なコードサンプルを紹介しています。そして 4. OMake言語の概要と構文 では実際にプログラミングするときに役立つ、いくつかの一例を紹介しています。 1.1 注意事項¶ OMakeマニュアル 日語訳 v1.3.2 このドキュメントは OMake バージョン0.9.8.6の マニュアル を日語訳したものです。原文のニュアンスを忠実に翻訳するよう心がけていますが、意図しない翻訳ミスやドキュメントの不備があるかもしれません。よって、 内容の正確さについて保証することはできません。 2. クイックスタート OMakeを利用するためのクイ

  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • gccを用いたCの共有ライブラリの作り方 - シリコンの谷のゾンビ

    ゆとりなもので,ついこないだまで動的リンクと静的リンクの違いがわかっていなかった.動的リンクというのが理解できた頃,そっかユーティリティライブラリは自分で共有ライブラリ作ってしまえばいいんだ,というごく当たり前のことが理解できた. UNIXをさわりはじめていた初期の頃,mecab.soのシンボリックが〜〜という用なハマりがあったのだけれど,あれは要するに実行時に共有ファイルへのパスを指定してあげればよかっただけのこと. わかると当たり前だけれど,わからないと「何がわからないのかわからない」状態に落ち込むなぁ,と改めて思いました. (幸いなことに,僕の周りには「ゆとり乙ww」と指導してくれる方々がいるので認識できるようになるのですが,少なくとも大学(院)時代はそうでなかったわけで,ゆとりスパイラルの恐ろしさを体感した気がしています.) というわけで自分用共有ライブラリの作り方をきちんと理解で

    gccを用いたCの共有ライブラリの作り方 - シリコンの谷のゾンビ
  • 静的ライブラリのリンク時に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

  • ライブラリの構築

    第 6 章 ライブラリの構築 この章では、ライブラリの構築方法を説明します。 ライブラリとは ライブラリには 2 つの利点があります。まず、ライブラリを使えば、コードをいくつかのアプリケーションで共有できます。共有したいコードがある場合は、そのコードを含むライブラリを作成し、コードを必要とするアプリケーションとリンクできます。次に、ライブラリを使えば、非常に大きなアプリケーションの複雑さを軽減できます。アプリケーションの中の、比較的独立した部分をライブラリとして構築および保守することで、プログラマは他の部分の作業により専念できるようになるためです。 ライブラリの構築とは、.o ファイルを作成し (コードを -c オプションでコンパイルし)、これらの .o ファイルを CC コマンドでライブラリに結合することです。ライブラリには、静的 (アーカイブ) ライブラリと動的 (共有) ライブラリ

  • 第6回 LinuxでC/C++言語のコンパイルを試す

    今回は,最新Linux(Ubuntu 8.04 LTS 日語ローカライズド Desktop CDをインストールしたマシン)上で,C/C++言語で記述したプログラムをコンパイルして動かしてみます。また,4ページ以降では,WindowsにインストールしたVMware Player上で,「Ubuntu 8.04 LTS 仮想マシン」を動かした場合を想定し,具体的な操作方法を紹介します。 これまでは,オープンソースの基事項や,Linuxコマンドの必要最小限の使い方を説明してきました。 今回はいよいよ,Linux上でC/C++言語を用いてソースコードを作成し,コンパイルして実行する流れについて解説します。Linuxディストリビューションの上で,「どのようにコードを書いて,コンパイルし,実行するのか」について,具体的なイメージをつかんでください。 開発環境の準備 多くのLinuxディストリビューシ

    第6回 LinuxでC/C++言語のコンパイルを試す
  • 1