ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

C++

Makefileのヘッダファイルの依存関係のお話

何があった Makefileのどのソースがそのヘッダに依存するとかの話があっていろいろ苦戦したのでメモ。 そもそも依存関係とは Makefileは、依存関係がズラーっと書いてあって、依存関係の末端にそのファイルの生成方法を書いておく、というのが基本的な考え方…

Boostのposix timeでマシンをまたぐマイクロ秒精度のタイマー

何があった 速度測定するのにプラットフォームに依存しないミリ秒単位のタイマーが欲しくなって無理なのかなーって思ったら実はできるのかも? ってことでいろいろ試してメモ。 単一マシン上の場合 特定の関数にかかる時間を調べてたいって言う時はboost::ti…

boost.asioの非同期IOのしくみ

なにがあった 一個前のエントリで同期通信のブロッキングがウンタラカンタラって言って結局非同期通信することに落ち着いたので、非同期通信がどうなってるのかをメモ 基本的な流れとか おおよそ次の3ステップ メインスレッドでio_serviceに送受信バッファ…

boost.asioで同期受信のブロッキング解除

なにがあった TPCでもUDPでも同期受信関数を呼び出すともれなくブロッキングされるのだが、プログラム終了時に安全にブロッキングを解除する方法が無いっぽいことをメモ。 状況 まず、同期受信関数は子スレッドで動作しているものとする。 親スレッドは受信…

debianでg++-4.6.3ビルド

何があった debianのaptitudeで用意されているgccのバージョンが古くてCUDA5.0のnvccがうまくいかないので自分ソースコードを持ってきてビルド。 環境 debian 6.0.6 gcc 4.4.5 gcc 4.6.3 gccのソースを入手 ここ(http://gcc.gnu.org/mirrors.html)の適当なミ…

cmakeをgitからcloneしてビルド

なにがあった aptitudeで用意されているcmakeのバージョンが古くて困ったので最新版をビルド。 gitからクローン git clone git://cmake.org/cmake.git ビルド ./bootstrap make sudo make install

debianにCUDA5.0

なにがあった CUDA5.0使うことになったのでそのインストールメモ。 多分、ubuntuでもおんなじ手順でいけると思います。 パッケージのダウンロード https://developer.nvidia.com/cuda-downloads からパッケージをダウンロード。 debian用はないので、ubuntu1…

gitからソースを持ってきてboostのビルド

何があった Ubuntuとdebianでパッケージとして用意されているboostのバージョンが微妙に違うのでgitから持ってきてビルドしてしまおうと思ったので、ビルドしてインストールまでのメモ。 gitから入手 作業用ディレクトリに移動して次のコマンド git clone gi…

putenvに渡す引数についての注意

発生した問題 putenvでDISPLAY環境変数書きこんで、SDLの初期化したらコアダンプした。試しに文字リテラルを関数に直接渡したら何故かうまく動いた。 何が問題だったのか putenvに渡す引数にnewで確保したヒープ領域のアドレスを渡したのが原因の模様。恐ら…

Makefileでオブジェクトファイルを列挙する

したいこと Makefileに生成するオブジェクトファイルのリストを記述部分がある。ここに並べるオブジェクトファイルはディレクトリ中のソースファイルの拡張子を".o"にしたものなので、自動生成するスクリプトをMakefileに埋め込みたい。 要は面倒臭い。 シェ…

OpenCVで動画がロードできなかった話

発生した問題 OpenCVの動画ロード関数であるcvCaptureFromAVI()関数が存在するはずの動画を読み込んでくれない。ファイルが存在しないなんてオチではない。 環境 Ubuntu 12.04 LTS OpenCV 2.4.2 何が原因だったかというと cvCaptureFromAVI()関数の内部で"ff…

eclipse CDTのDiscoveryにpkg-configの中身まで拾って欲しい時

やりたいこと こんな感じのMakefileを書いたとする all: g++ -o hoge hoge.cpp `pkg-config piyo --cflags --libs`このMakefileを使ってeclipseでビルドしても``で囲まれてる部分から展開される-IオプションはDiscoveryで検出されない。 展開された結果得ら…

OpenCVをビルドしてインストール

動機 なんか手順間違えてる気がするのでちゃんとインストールし直す。 環境 Ubuntu 12.04 LTS OpenCV 2.4.9 必要な依存パッケージの入手 基本的にはこのコマンドでまとめて入手出来る。 sudo apt-get build-dep libcv-dev コンパイルしてて無くて困ったパッ…

ubuntuにffmpegをインストール

動機 gitからソースコード持ってきてビルドしてインストールする手順のメモ。 環境 Ubuntu 12.04 LTS いろいろあった ここ(https://wiki.ubuntulinux.jp/UbuntuTips/Application/HowToInstallAndUseLatestFFmpegAndX264)に乗ってる手順そのまんまでやってみ…

ubuntuにeclipse CDTを導入

動機とか g++とemacsでC++コード組んでたけど、リファクタリングが無い! って所で乗り換えを決意。なんだかんだで生産性ほしかったらIDEに落ち着くんですかね。 CUI環境でアレだけの機能使えるのはメリットだと思うので、二度と使わないって言うことは無い…

ffmpegをg++コンパイルするときのバグフィックスいろいろ

ささっとリンクだけ箇条書きで UINT64_Cでエラーが出たら https://trac.macports.org/attachment/ticket/34094/libavutil-common.h.diff リンクの段階でundefinedが大量に出たら http://ffmpeg-users.933282.n4.nabble.com/undefined-reference-to-all-libav…

gccとVisualStudioの両方でコンパイルできるようにするには

何があった emacs+gccで書いてたコードをVisualStudio 2010に持っていったらコンパイルできない! 割と意味不明なエラーでコンパイルできない! 定数が二行目に続いてますってなんだ! で、原因はやっぱり文字コードっぽい。だって特定の文字に反応してるっ…

VisualStduio2010でのインクルードパスとかのおはなし

なにがあった VisualStudio2010を使っている誰もがネタにしているでしょうが、僕も引っかかりました。で、話がなんか妙にややこしくなっちゃったみたいなので、そこらへんをメモ。 何が問題か ここ(http://d.hatena.ne.jp/blono/20100501/1272709221)を参考…

配列を配列のまま関数に渡したい

何があったか boost.asioでネットワークIO書いてたら次のような状況が出てきた 配列作る 配列を関数に渡す 関数内で配列全体のサイズとる(正確にはテンプレート関数の引数のマッチングの問題なんだけど意味的にはニアリイコールってことで) ただし、関数の…