タグ

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

  • gccで Wall & Wextra を使っても有効にならない警告 - Qiita

    gccで-Wall -Wextraを付けてもなお有効化されない警告オプションがあるそうなので、ドキュメントを読んでその効能を簡単に調べた。 なお、これらのオプションの中にはfortran、Objective-C用のものもあるようだが、それらについては説明を省く。 検証環境: gcc (Rev3, Built by MSYS2 project) 5.2.0 (やや特異な環境なのでLinuxなどの一般的な環境とは状況が違うかもしれない) 参考: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html https://gcc.gnu.org/onlinedocs/gcc/Objective-C-and-Ob

    gccで Wall & Wextra を使っても有効にならない警告 - Qiita
    iww
    iww 2017/09/15
  • PIE (位置独立実行形式) を作成する - bkブログ

    PIE (位置独立実行形式) を作成する 通常、PIC (位置独立コード) は共有ライブラリに用いられますが、Linux 上で最近の GCC, Glibc および GNU Binutils を使うと、実行ファイルも位置独立にすることができます。記事では PIE (位置独立実行形式) を作成する方法と特徴を紹介します。 PIE の基 それでは例を見てみましょう。次のようなファイル foo.c があるとします。 #include <stdio.h> void foo() { printf("hello\n"); } int main() { foo(); return 0; } このファイルを -fPIE というオプションをつけてコンパイルし、 -pie というオプションをつけてリンクすれば PIE を作成できます。出来上がったファイルは普通に実行できます。 % gcc -c -fPIE

    iww
    iww 2017/08/25
    ld-linux.so みたいな、実行できるキモいライブラリを作るオプション
  • 静的ライブラリのリンク時に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

  • 静的ライブラリ (.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 &quot;Stretch&quot;のコンパイラは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 &quot;Stretch&quot;のコンパイラは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) としてお