Windows上でのVC++とLinux上でのGCCとに対応するコードを書く際に、コンパイラ依存部分を#ifdefで切り替える場合のマクロ指定を調べました。 コンパイラがデフォルトで定義するマクロで使えそうなものは、 Linux/GCC __linux__, __GNUC__ Windows/VC++ _WIN32, _MSC_VER Linux/GCCでは__unix__も定義されるが、UNIX全体を一つの書きかたで括るのは無理な話。 __GNUC__, _MSC_VERともに、コンパイラ・バージョンが識別できる値がマクロに定義されるので、バージョン違いの対応もこのマクロで可能です。なお、__GNUC__にはメジャーバージョンの値が定義されるので、マイナーバージョンの値まで識別する必要があるなら__GNUC_MINOR__マクロを併せて使います。 GCCでデフォルト定義されるマクロ一覧を
concov のドキュメントを書こうと思ったけれど、何から書くか困ったので、とりあえずその前に gcov の使い方とはまりどころを書いてみます。 gcov とは C 言語で書かれたプログラムのカバレッジを測定するツールです。gcc に付属しています。 基本的な使い方 こういうコードがあるとする。 /* test.c */ #include <stdio.h> int foo(int x, int y) { return x + y; } int bar(int x, int y) { return x - y; } int main(void) { printf("%d\n", foo(2, 3)); printf("%d\n", foo(3, 4)); return 0; } コンパイルする。-coverage をつけると gcov 用のオブジェクトファイルが生成される *1 。 $ g
d:id:torutk:20081103でBoostライブラリのSONAMEについて調べていました。今回は、自分で作成するプログラムにおいて、動的共有ライブラリファイルのSONAMEの仕組みを使ってバージョン管理をする方法を模索しました。 やりたいこと C++のプログラムを動的共有ライブラリで作成・提供する際、ライブラリのバージョンアップにおいて、ソース互換性、バイナリ互換性の有無をバージョン番号で区別したい。 また、バイナリ互換性を失うバージョンアップの際は、誤って新しいバージョンのライブラリと古いライブラリ利用コードとを実行時にリンクできないようにしたい。 バージョン番号の付け方 バージョンアップには以下の種類があります。 ソース互換性も失う大きなバージョンアップ ソース互換性はあるがバイナリ互換性を失うバージョンアップ ソース互換性もバイナリ互換性もあるバージョンアップ Linuxの
勉強がてらメモ。 適宜更新していこう。うん。 Valgrindって? デバッグやプロファイラなどの複数のツールから構成されるツール群の総称。 メモリリークチェックツールとして有名だと思いますが、 それはValgrindツール群の中のMemcheckというツールによる機能だったのですね。 どんなツールがあるのか?マニュアルを見ると・・・ Memcheck 言わずと入れたメモリエラー検出ツール。特にC/C++に向いている。リークチェックやバッファーオーバーランなどね。 Cachegrind プログラムのキャッシュグラフ、または分岐予測をしてシミュレートする。プログラムを速くするために使うツール。 Callgrind 関数呼び出しをトレースしたりできる。Cachegrindをかぶる部分もあるが、Cachegrindとは別の情報も収集できる。 Helgrind マルチスレッドのプログラム向け。スレ
-アセンブラコードをエルフ形式へ arm-none-eabi-as hello.S -エルフ形式からバイナリへ arm-none-eabi-objcopy -O binary a.out hello.bin -バイナリからディスアセンブル arm-none-eabi-objdump -b binary -m arm -D hello.bin -エルフ形式をディスアセンブル arm-none-eabi-objdump -m arm -D hello.elf -バイナリからエルフ形式へ arm-none-eabi-objcopy -I binary -O elf32-little hello.bin hello.elf ※-Oとか-mオプションの指定はあくまで一例です。それぞれの目的に応じて、設定してください。 -objdump -b arm-none-eabi-objdump: suppor
はじめに このページでは、GNUの開発ツールキットである "GNU Compiler Collection (gcc)","GNU Binary Utilities (gnu-ld, gnu-as)","GNU Debugger (gdb)"に関して色々書きます。近頃、「この手のページって無いですね」っていう方が増えてきたので、ちょっと作ってみました。GNUに関するちょっとした話とともに、各ツールの話、そしてビルド方法や使用方法などを説明できればと思ってます。 What's GNU? 「GNUはUNIXではないんです」 "GNU"という単語は、Linuxユーザや組込みプログラマなら一回は聞いたことあるでしょう。GNUとは、GNUプロジェクトそのものを指す言葉でもあり、GNUプロジェクトによって作られたプログラムを指す言葉でもあり、GNUプロジェクトが設けているライセンスを指す言葉でもありま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く