タグ

gccに関するiwwのブックマーク (144)

  • 静的ライブラリ (.a) の作成と利用 | yunabe.jp

    静的ライブラリ (.a) の作成 ar コマンド で複数のオブジェクトファイル (.o) をまとめて静的ライブラリ (.a) を作成できます。

  • Makefile の補足

    make は実行プログラムの作り方を知っている make コマンドは, 実は C や C++ のソースプログラムから実行プログラムを作製する方法を最初から知っています. このため, 一つのソースプログラムから一つの実行プログラムを作成するような場合は, Makefile において手続き(コマンド)の記述を省略することができます. CFLAGS = -I/usr/X11R6/include LIBS = -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread all: prog1 prog2 prog1: prog1.c --Tab-->$(CC) $(CFLAGS) prog1.c -o prog1 $(LIBS) prog2: prog2.c --Tab-->$(CC) $(CFLAGS) prog

    iww
    iww 2017/08/22
    LDLIBS
  • Using and Porting the GNU Compiler Collection (GCC) - GCCコマンド・オプション

    GCCを起動すると、 通常は、 前処理(preprocessing)、 コンパイル、 アセンブル、 リンクが行われます。 「全体的(overall)オプション」によって、 この一連の処理を中途の段階で停止することができます。 例えば、 `-c'オプションはリンカを起動しないよう指示するものです。 この場合、 アセンブラによって生成されるオブジェクト・ファイルが出力となります。 他のオプションは、 一連の処理の中の1つの段階に渡されるものです。 オプションの中には、 プリプロセッサを制御するものもあり、 コンパイラ自体を制御するものもあります。 また、 アセンブラやリンカを制御するオプションもありますが、 それらのほとんどは、 ここではドキュメント化されていません。 というのは、 このようなオプションを使うことが必要になることはめったにないからです。 GCCにおいて使うことのできるコマンドラ

    iww
    iww 2017/08/22
    『-llibrary リンク時に、 libraryにより指定される名前のライブラリを探します。コマンドの中のどこにこのオプションを指定するかによって、 違いが出てきます。』 知らなかった そんなの・・・
  • C: 静的ライブラリと共有ライブラリについて - CUBE SUGAR CONTAINER

    C 言語で書かれた静的ライブラリと共有ライブラリについて、いまいち理解がちゃんとしていなかったのでまとめておく。 ライブラリというのは、複数のアプリケーションで使われるような共通の機能をまとめたものをいう。 今回使った環境は次の通り $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS" $ uname -rm 5.11.0-1021-gcp x86_64 $ gcc --version gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free s

    C: 静的ライブラリと共有ライブラリについて - CUBE SUGAR CONTAINER
  • 64bit Linuxで32bit ELFをコンパイル - Qiita

    Help us understand the problem. What is going on with this article?

    64bit Linuxで32bit ELFをコンパイル - Qiita
    iww
    iww 2017/08/05
    -m32 をつける。 あと apt-get install libc6-dev-i386
  • 2016年6月28日 Debian 9 "Stretch"のコンパイラはGCC 6オンリーで | gihyo.jp

    6月24日、Debian開発者のマティアス・クローゼ(Matthias Klose)氏はDebianの開発者メーリングリストに対し、2016年末に正式リリースが予定されているDebian GNU/Linux 9 "Stretch"のコンパイラに関して「GCC 6がStretchのデフォルトコンパイラになる」と投稿した。現在、テスト版(Debian Testing)とUnstable版のユーザであれば、GCC 6をデフォルトコンパイラとして利用し、バグフィクスなどをレポートすることができる。 GCC 6 & binutils for the Debian stretch release クローゼ氏は「StretchをGCC 4.9/GCC 5なしでリリースすることは僕のゴールだ」とも明言しており、StretchではGCC 6がデフォルトになるだけでなく、GCC 4.9およびGCC 5はStr

    2016年6月28日 Debian 9 "Stretch"のコンパイラはGCC 6オンリーで | gihyo.jp
    iww
    iww 2017/08/04
    いまだにgcc4.4使う仕事してるのに
  • FAQ_Private

    Loading×Sorry to interruptCSS ErrorRefresh

    iww
    iww 2017/08/02
    古い
  • Using the GNU Compiler Collection (GCC)

    iww
    iww 2017/07/25
    errnoとかが使ってるやつ。 スレッド局所記憶。 スレッドローカルストレージ。 Thread Local Storage. TLS
  • [gcc]long long intの値をprintfで表示させる

    long long intで64bit整数値を格納した際に、その値をprintfで表示させる方法です。 普通に%dや%xで表示させようとしても、下位32bit分しか見てくれないので正しい値を表示させる事が出来ません プログラム #include <stdio.h> int main() { long long int a = (long long int)1 << 63; // NG: intとして表示 printf( "case1: %d\n", a ); // NG: 16進で表示 printf( "case2: %x\n", a ); }

    [gcc]long long intの値をprintfで表示させる
    iww
    iww 2017/07/22
  • C99 - Wikipedia

    C99は、ISOで定められたC言語の規格である。正式な規格名は ISO/IEC 9899:1999。 歴史[編集] ANSIの標準化プロセス(C89)のあと、C言語仕様はC++が標準化の取り組みによって進化しているのと比べて停滞していた。1995年には標準追補を作成したが、これはC89への細かい修正および国際文字集合対応の追加であった。1990年代の後半にいくつかの訂正を経て、ISO/IEC 9899:1999 として1999年に発行した。この標準は"C99"と呼ばれ、ANSI標準としても2000年5月に受理。国際的なC標準は作業部会ISO/IEC JTC1/SC22/WG14で保守している。 新機能[編集] C99にはさまざまな新機能が導入された。その多くはさまざまなコンパイラによってすでに拡張として実装されていた。 インライン関数 ファイルスコープでない変数宣言がブロックの先頭になけれ

    iww
    iww 2017/07/21
    『GCC 4.x までのデフォルトは C89 に GNU 拡張を加えた -std=gnu89』
  • Difference between -pthread and -lpthread while compiling

    iww
    iww 2017/07/11
    -pthreadオプションを付けると、なんかdefineが増えて、もしかしたらスレッドに最適化してくれるかもしれない という話。
  • -pthread を忘れると std::thread で例外が発生する仕組み - Qiita

    std::thread を使用したソースを -pthread オプションを付けずにビルドすると、ビルドエラーにならずに実行時エラーになる仕組みが気になったので調べてみました。 パスやら何やらは x86-64 版の Gentoo Linux のものです。他ディストリビューションでは微妙に異なるかもしれません。 -pthread オプション g++ や clang++ で C++11 以降に実装された std::thread を使おうとすると、オプション -pthread が必要です。これを忘れると、スレッドを実行しようとした時点で例外が発生してしまいます。 #include <iostream> #include <thread> void func() { std::cout << "Hello!" << std::endl; } int main() { std::thread(func

    -pthread を忘れると std::thread で例外が発生する仕組み - Qiita
  • OpenMPの基本的な使い方 - Qiita

    サーバサイドの大規模計算・組み込み系・ゲームプログラミングなどの分野ではしばしば高速化を求められることがある。 その中でも、スレッド並列に関する高速化はマルチコア化の波で近年特に求められている。 この記事ではスレッド並列にOpenMPを利用した高速化手法についての基的な部分を紹介していく。 *言葉の解釈によっては適切でない部分や、OpenMPの正しい使い方から外れた部分があるかもしれません。 *2017.02.16 記事の一部に書き途中・適切ではない記載があったので更新しました。 スレッド並列化とは? スレッド並列化とは、近年のPCによく使われているマルチコアのCPU上で行われる並列化のことである。CPUによっても変わるが、主流のIntel社製Core iシリーズのCPUなどでは1コアで2スレッドまでのスレッドを持つことができる。 例に、2016年の新モデルMacBookProの13イン

    OpenMPの基本的な使い方 - Qiita
  • C言語で並列処理(OpenMP) - 余白の書きなぐり

    Windows(minGW), Mac, Linux のgcc(version 4.2以降)で動作確認済。 新しいライブラリ等をインストールすることなく、デフォルトのままのgccでコンパイルが通った。 こんなに手軽に並列計算できるなんてすごい。 ソースコード // hoge.c // 並列処理のプログラム // Windows, Mac, Linux の全ての gcc (4.2以降) でプログラム動作確認済 #include <stdio.h> #include <omp.h> int main(int argc, char const* argv[]) { int n; n = omp_get_max_threads(); // デフォルドのスレッド数を取得 printf("max threads (default): %d\n",n); omp_set_num_threads(16)

    C言語で並列処理(OpenMP) - 余白の書きなぐり
  • [c/c++]私のC言語 (10) - "-lpthread"と"-pthread"

    画像が表示されないページは、元画像を間違えて削除してしまっているためです。 もうデータが残っていないので、想像力で補ってください。 ようやく10回目を迎えた。 別に回数をどうこうという訳ではないのだがね。 このシリーズを書き始めたのは、ネットで検索した情報を見て、「組み込みって、なんかルールがきつそうだからやりたくない」と思われるんじゃなかろうか、と勝手に思ったので、「分野によってはそうでもないのだよ」ということを言いたくて始めたような気がする。 私は、けっこうリソースに余裕がある組み込みをやることが多い。 LinuxのようなOSが動く場合はもとより、ARMだったら32bitだし、RL78は16bitだったのできつかったなぁ、とか、そういう感じだ。 また、nRF51822やESP8266のように機能とセットになったマイコンを使うことも多い。 そうなると、載せ替えるとしても同じマイコン系列に

    iww
    iww 2017/07/11
    最近は-pthreadの方を使うらしい。
  • 2つのチャームクォークを持つ新バリオン「Ξcc++」を初めて発見したとCERNが発表 - GIGAZINE

    CERNが2つのチャームクォークを含む新物質「Ξcc++」を発見したとEPS会議で発表しました。これまで存在が予想されていた「2つの重いクォークを持つバリオン」が初めて発見された例です。 Observation of the doubly charmed baryon Xicc++ - lhcb_paper_2017.07.06.pdf (PDFファイル)http://press.web.cern.ch/sites/press.web.cern.ch/files/file/press/2017/07/lhcb_paper_2017.07.06.pdf LHCb announces a charming new particle | CERN https://home.cern/about/updates/2017/07/lhcb-announces-charming-new-particl

    2つのチャームクォークを持つ新バリオン「Ξcc++」を初めて発見したとCERNが発表 - GIGAZINE
  • Makefile での .PHONY と FORCE の違い

    [以前](/2012/02/linuxmakefile-4.html)、 `.PHONY:` 指定と `: FORCE` 指定について触れたことがあるのですが、 明らかに両者を使い分けるべきケースがあることに最近気がついた。 まずは、 make の初歩ですが、 PHONY ターゲットからおさらいします。 次のような `clean` ターゲットがあったとする。 clean: $(RM) $(programs) $(objects) もし、カレントディレクトリにたまたま `clean` という名前のファイルが存在すると、 この `clean` は実行してくれません。 $ touch clean $ make clean make: `clean' is up to date. そこで、 .PHONY: clean clean: $(RM) $(programs) $(objects) としてお

  • C/C++でOpenMPを試してみる

    OpenMPとは? OpenMPとは、並列プログラミング用の 機能で、C/C++, Fortran で使用できます。並列プログラミングには色々とありますが、以下の様な利点があります。 通常のプログラムからOpenMPを使用するように書き直しやすい。 ハード(CPUのコア数)に依存しないプログラムが書きやすい。 Visual Studio(Pro2005以降), gcc(4.2以降), インテルコンパイラ(V9以降)などある程度マルチプラットフォームで使用できる。 逆に欠点としては以下があります。 記述に#pragmaディレクティブというコンパイラ専用の機能の記述に使用する方法を使用するので、プログラムが見にくくなる。 パフォーマンスは特にコア数が増えると今一歩のところがあるらしい。 現在OpenMP4.0まで出ているが、Visual StudioはOpenMP2.0まで、LLVMは現在Op

  • Cプリプロセッサの挙動の違い - ここは匣

    Cプリプロセッサというのはgcc, clang, MSVCなどの処理系ごとに微妙に異なります。 #pragmaディレクティブなどは、各コンパイラ等の独自拡張機能をサポートする為などに使われていますが、Cプリプロセッサの差というのはサポートする機能の有無やキーワードの違いだけには留まらないようです。 今日は、偶然MSVCが#pragma内のトークンを展開するという個人的に意外な挙動を発見したのでこれを書いておきます。 次のような例です。 #define print(msg) message(msg) int main() { #pragma print("hello world!") }; このように記述した場合、gccとclangでは warning: unknown pragma ignored [-Wunknown-pragmas] #pragma print("hello world

    Cプリプロセッサの挙動の違い - ここは匣
  • VisualStudio 2015 で Linux アプリの開発&デバッグ