タグ

c_langに関するshu_ohm1のブックマーク (30)

  • MPIライブラリ毎のコンパイラ指定方法 - HPCメモ

    たいていのMPIライブラリには、伝統的にmpi{cc,f90,cxx}といったコンパイラのラッパーが付いています。-Iとか-Lとか-lを適当に設定したうえで、コンパイラを呼び出してくれる便利なものですが、 これが最終的に呼び出すコンパイラを切り替える方法がライブラリによってバラバラなので、ざっくりとまとめておきます。 IntelMPIの場合 コマンド名で呼び出すコンパイラを切り替えています。 mpicc: gcc or cc mpicxx: g++ mpifc: gfortran mpigcc: gcc mpigxx: g++ mpif77: g77 mpif90: gfortran mpiicc: icc mpiicpc: icpc mpiifort: ifort gccのかわりにgcc44とかを呼びだければPATHの設定で先にくるようにしておけば良いはず*1 mpich2, mpich

    MPIライブラリ毎のコンパイラ指定方法 - HPCメモ
    shu_ohm1
    shu_ohm1 2018/03/06
    OpenMPIの場合、環境変数 OMPI_CC や OMPI_CXX でコンパイラを指定できる。ただしmakefileが絡むと環境変数の設定が面倒なことになるのでややトリックが必要。
  • Makeでヘッダファイルの依存関係に対応する - wagavulin's blog

    CやC++で書かれたプログラムをMakeを使ってビルドする、というのはUnix/Linuxではよく行われていることだが、ちゃんとしたMakefileを書くのは意外と難しい。 例えば以下の3つのファイルからなるプログラムを考える。 foo.h: 関数fooの宣言がある。 foo.c: 関数fooの実装がある。 main.c: 関数fooを呼び出す。 /* foo.h */ void foo(int a); /* foo.c */ #include "foo.h" #include <stdio.h> void foo(int a){ printf("%d\n", a); } /* main.c */ #include "foo.h" int main(int argc, char **argv){ foo(10); return 0; } Makefileは例えば以下のように書ける。 PRO

    Makeでヘッダファイルの依存関係に対応する - wagavulin's blog
  • gccのコンパイルオプション-fPICと-fpicの違いは? - C言語入門

    Cコンパイラのgccコンパイラやg++(C++のコンパイラ)でよく使われる -fPIC オプションと -fpic オプションの違いについてまとめました。また、-fPIC オプションをつけた場合、どのようなアセンブリ言語が生成されるのか、確認しました。 読み方 pic ぴっく position-independent code ぽじしょん いんでぃぺんでんと こーど 概要 Unixでプログラムをビルドしている最中に流れてくるメッセージをみていると、cc(gcc)のコンパイルオプションに -fPIC というオプションがついていることに気がつくと思います。 gccには、-fPIC のほかに -fpic というオプションもあります。小文字か大文字かの違いがありますが、一体何が違うのでしょうか? まず、 -fPIC について解説し、そのあと -fPIC と -fpic の違いについて説明します。 -

    shu_ohm1
    shu_ohm1 2017/09/21
    PIC (Position Independent Code) とは、位置独立コード。PICでコンパイルされたコードは、メインメモリのどこに配置されても、絶対アドレスに関わらず、正しく実行できる。大文字 -fPIC オプションはサイズ制限がない。
  • c/c++をラップしてpythonで使えるように - Python | Welcome to underground

    c/c++ wrapper for python c/c++の遺産をpythonでも使いたい! そんなあなたに朗報! 今お使いのものがpythonでもe使えますよ! しかも無料ですよ! 参考にすべきリンク先 PythonからCプログラムを呼び出す | 象歩 PythonからMinGWで作ったCの関数を呼んでみる | BTY備忘録 SWIGでPythonラッパを書いてみる - 睡眠不足?! SWIG and Pythono Boost.Python - Boost 1.49.0 boost.python - Pythoninfo Wiki Boost.Python の機能をざっと紹介してみる 1,2はPython.hを使った伝統的な方法. 3,4はSwigを使ってユーザーが楽する方法. 5はc++もライブラリBoostの中のPythonを使ってかなり効率的に作る方法. 6もboost.pyt

  • valgrindでC/C++のメモリリークを発見する - Qiita

    ==23525== Invalid free() / delete / delete[] / realloc() ==23525== at 0x1000089DF: free (in /usr/local/Cellar/valgrind/HEAD/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) ==23525== by 0x100000F4F: main (sample.c:8) ==23525== Address 0x10081f510 is 0 bytes inside a block of size 4 free'd ==23525== at 0x1000089DF: free (in /usr/local/Cellar/valgrind/HEAD/lib/valgrind/vgpreload_memcheck-amd64-darwi

    valgrindでC/C++のメモリリークを発見する - Qiita
    shu_ohm1
    shu_ohm1 2017/05/10
    バルグリンド: SEGVで落ちるようなプログラムのデバッグに便利なツール
  • MinGW(gcc) の Windows へのインストールと使い方 | プログラマーズ雑記帳

    Windows で C, C++ 言語のコンパイラー である gcc(g++) を使いたい場合は MinGW をインストールします。 今回はこの MinGW のインストール方法と gcc の使い方について説明します。 MinGW とは MinGW は "Minimalist GNU for Windows" の略で、ネイティブの Windows アプリを開発するために必要な最小限の環境を提供するツールセットです。 ここでネイティブのアプリというのはコンパイルして作るマシン語の実行ファイルで、 C, C++ 言語だけではなく、 Ada, Fortran, Objective-C といった言語のコンパイラーを使うこともできます。 因みにネイティブでないものといえば、 仮想マシン(VM)やスクリプト言語のアプリですが、 違いについて詳しく知りたい方は以前の記事を見て下さい。 雑把の仮想マシン(J

  • MPIの環境構築や基本コマンドのまとめ - Qiita

    はじめに MPIを使って並列処理をする際に必要な準備やコマンド、ホストファイルの書き方を勉強したので、ここにざっとメモっときます。 以下の説明ではCentOS7で実行する場合を想定しています。 (追記: 2/22) ホストファイルの書き方の説明を一部修正しました。 (プロセス割り当ての設定の書き方が、MPICHとOpenMPIとで違っていました) MPIとは MPI (Message Passing Interface) は、並列コンピューティングを利用するための標準化された規格のことです。 並列処理には共有メモリ型と分散メモリ型の2通りの処理形態がありますが、MPIは分散メモリ型の並列処理を行います。 (共有メモリ型の並列処理を行うものにはOpenMPなどがあります) MPIの主な実装としてはMPICH (エムピッチ) とOpenMPI (オープンエムピーアイ) などがありますが、基

    MPIの環境構築や基本コマンドのまとめ - Qiita
  • printfデバッグとバッファリング - Logic Dice

    土曜日に後輩に頼まれてCのプログラムを見たところ、次の様なコードが。 main() { /* 処理1 */ printf("!"); /* 処理2 */ printf("!"); /* 処理3 */ }これで、セグメンテーションフォルトが起こるので、!の数を数えてみると、結果として1つだけ出力される。 そのため、処理2にエラーがあると思ってバグを探したけれど、バグが見つからなかったそうだ。 このように、printfなどで出力結果を見ながらデバッグを行う方法は、それなりに使える。しかし、そのためにはprintfの仕様を理解していなくてはならない。 printfの出力結果は、一般的にバッファへ保持される。 つまり、関数を呼べばすぐに結果がコンソールに出力されるわけではない。 バッファの内容をきちんとコンソールへ出力することを保証しなければならないのである。 コンソールへ出力するための方法として

    printfデバッグとバッファリング - Logic Dice
    shu_ohm1
    shu_ohm1 2012/08/09
    printf系関数のバッファリングの話
  • IPA セキュア・プログラミング講座

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:Webアプリケーション編 & C / C++言語編

  • How to Detect Stack Overflow with GCC

    shu_ohm1
    shu_ohm1 2012/07/15
    GCCで-fstack-checkを付けてコンパイルするとスタックオーバーフローを検知するコードが含まれたプログラムを出力する模様
  • CTF Exploitの練習 - kusano-k’s blog

    CTFセキュリティ関係のクイズ)でExploit(プログラムの脆弱性を突く)問題がさっぱり解けないので、練習した。 問題 こんな問題を自作した。 [kusano@madoka exploittest]$ ll 合計 16 -rwsrwxr-x 1 secret secret 5078 2011-10-05 23:50 crypt -rw-rw-r-- 1 secret secret 141 2011-10-05 23:49 crypt.cpp -rw------- 1 secret secret 88 2011-10-05 23:56 secret.txtcrypt.cpp #include <stdio.h> #include <string.h> int main() { char buf[256]; gets( buf ); memfrob( buf, strlen(buf) );

    CTF Exploitの練習 - kusano-k’s blog
    shu_ohm1
    shu_ohm1 2012/07/15
    exploitの例
  • Zephyr Cradle Diary(2008-08-26)

    ■ [PG] char 型を 30bit ビットシフトする C言語の話です。プログラミングのお話。 ここで言う char 型は 8bit の型定義としますが、これを 30 bit シフトするというのは問題ないのかどうか、という話。まあ仕事の最中にそんな記述を見て「これなんでコンパイルエラーにならんの?」となったのが発端なのですが。 C言語においてのビットシフトとは、まあ下みたいに書く訳です。 char x = 1; x = x << 2; char 型の変数 x (初期値1)を2bit分左にシフトした値にする、の意味です。結果的に x = 4 になるわけですが、まあその後の値はさておき。 ここでは、以下の式は許されるのかという話。 char x = 1; x = x << 30; ここで x はいくつになるかというと、 x = 0 です。 char 型は 8bit なので、当然ながらビット

    Zephyr Cradle Diary(2008-08-26)
    shu_ohm1
    shu_ohm1 2011/09/27
    char 型を 30 ビットシフトする
  • Zephyr Cradle Diary(2009-01-27)

    ■ [Game] ジルオール∞+(2) ウェイトレスさんイベントを終えて、でもそこまでとそこからがまだまだ長く、ようやく終盤かなあといったところ。 INT 上げまくったナッジが強くなりすぎて、デュアルスペルのホーリー×2で3000くらい出るので、ほぼ敵なし状態に。ただ AGI を上げてないのでターンが回ってくるのが遅いのはご愛敬。まあその間に全滅したりするんですけどね! 取り敢えず主力は主人公とウェイトレスさんの二大高 AGI + 高 STR コンビ。ダブルでソニックアタック連発してるだけで中ボスクラスなら余裕で沈められる。それで沈められなくても先のホーリー×2が待ってるので、大抵は1ターンで戦闘終わり。まあアークナイトのソウルが強すぎですよっていう話ですかね。 VIT と MIN が低いから喰らうと涙目ではあるのですが。 一周目なので、ストーリーは後手後手の展開に。ゼネテスを助けられなか

    Zephyr Cradle Diary(2009-01-27)
    shu_ohm1
    shu_ohm1 2011/09/27
    Nullポインタチェックはしましょう
  • トップページ - 碧色工房

    トップページ - 碧色工房
    shu_ohm1
    shu_ohm1 2011/09/27
    C, Java, Linux, LaTeX 等について
  • Zephyr Cradle Diary(2009-05-28)

    ■ [PG] volatile(C言語) 話題に困ってかつCDのレビューを書く気力もないときは適当にプログラミング話を綴っていけば良いんじゃないかと閃いた次第。まあ基はやっぱりC言語になっちゃうんですけど。しかも初歩的な話だったりしますが。 そんなわけで、volatileです。 volatileって、あんま使わないですよね。たぶんVCとかで開発やってる限り、ほっとんどお世話にならないのではないかと。そもそもマルチスレッドプログラミングなんていきなりやらされることもなく、そんな理由からも新人研修とかでも飛ばされたりして。でも知らないと困るときが絶対的にあります。マルチスレッドプログラミングが必要なときですね。 volatileってのが何をするかっていうと、コンパイル時の最適化を抑止します。最適化ってのは、例えば変数aに0を代入して、次のステートメントで即座に変数aに100を代入するような処

    Zephyr Cradle Diary(2009-05-28)
    shu_ohm1
    shu_ohm1 2011/09/27
    volatile(最適化抑制)
  • 画像ファイルの扱い方 (1) - C言語 - 碧色工房

    プログラミングの入門書に書いてある通りに勉強していても、 自分のプログラムの結果がコンソールに出ているだけではなんだか味気なく感じてしまうことはありませんか? ある程度プログラミングのやり方が分かってくると、画像を扱いたくなってくる人も多いでしょう。 それに、結果が画像の形で現れてくれると、プログラミングがなんだか一層楽しくなります。 でも、画像ファイルの扱い方は入門書にはほとんど書かれていませんね、 私も画像ファイルを扱いたいと思ったときどうすればいいのか調べるのに苦労しました。 ここでは、その画像ファイルのC言語での扱い方を解説したいと思います。 ここでやる内容は、画像ファイルのデータを書き出して、それをビューワなどで開いて確認するという形になります。 画像ファイルをC言語のプログラムで表示したりするというのとはちょっと違いますのでご注意を。 (こいつをするにはOSに依存したライブラリ

    画像ファイルの扱い方 (1) - C言語 - 碧色工房
  • Ubuntu のデフォルトでは gcc でコンパイルできないので build-essential を入れておく | BlueSky Lab.

    先日インストールした、Ubuntu Linux 8.04 LTS で gcc を使って C 言語のプログラムをコンパイルしようとしたら、「stdio.h がありません」、と出た。 いろいろ調べてみたら、デフォルトのインストールのままでは、libc が入っている build-essential のパッケージが入っていないそうなので、追加でインストールしておいた。 ubuntu@ubuntu:~$ gcc test.c test.c:1:19: error: stdio.h: No such file or directory test.c: In function 'main': test.c:5: 警告: incompatible implicit declaration of built-in function 'printf' エラーはこんな感じ。「stdio.h がありません」、「

    shu_ohm1
    shu_ohm1 2011/09/27
    デフォルトでは標準ライブラリは入ってない
  • Zephyr Cradle Diary(2009-06-04)

    ■ [PG] 可変引数を持つ関数マクロ(C言語) GNU Cの言語拡張とはいえ、そんなの出来たのか! いや出来そうな気はしてたんだけど、じゃあそれってどう使うんだ? って考えて挫折しました。まあ当然ながら、GCCのリファレンスに書いてあるわけで。(たまたま覗いてたら見つけた) http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Macro%20Varargs GNU C では、関数と同じように、マクロも可変数の引数を取ることができる。その場合のマクロの定義構文は関数の場合に使われるものに良く似ている。次に例を示す。 #define eprintf(format, args...) \ fprintf (stderr, format , ## args) ##というプリプロセッサディレクティブがあるのは、マイナーながら知っていた。前後の文字列を合体させると

    Zephyr Cradle Diary(2009-06-04)
    shu_ohm1
    shu_ohm1 2011/09/27
    可変引数を持つ関数マクロ
  • ddd

    ソフトウェア開発支援ツール:デバッガ DDDの使い方 DDD(Data Display Debugger)は、超多機能デバッガであり、 すべての機能を使いこなすのは難しい。 しかし、基的な使い方だけでも、知っていれば充分に役立つ。 !!注意!! dddは、日語を含むソースファイルを正しく表示できない。 文字化けするだけでなく、 ソース表示ウィンドウ中の位置の計算を間違えるために、 ブレークポイントの描画位置、マウスクリックされたときの ポインタの位置などを間違えるようである。 トレースや実行は一応できるのだが、 事実上使いものにならなくなる。

    shu_ohm1
    shu_ohm1 2011/09/27
    ソフトウェア開発支援ツール:デバッガ DDDの使い方 / DDD(Data Display Debugger)は、超多機能デバッガであり、 すべての機能を使いこなすのは難しい。 しかし、基本的な使い方だけでも、知っていれば充分に役立つ。
  • usskim / strlcpy

    shu_ohm1
    shu_ohm1 2011/09/27
    STRLCPYの実装