タグ

gccに関するt-murachiのブックマーク (26)

  • gccは第三者検証を通せる.しかし壁がある.

    JAXAのH2Bロケットに搭載されたTOPPERS/HRPカーネルでの開発環境構築を基にした,高信頼環境におけるgccの能力と,立ちはだかる壁のお話.

    gccは第三者検証を通せる.しかし壁がある.
    t-murachi
    t-murachi 2019/05/09
    なるほどね(´・ω・`)
  • Linux共有ライブラリの簡単なまとめ - wagavulin's blog

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。 作るときはgccの-sharedオプションを使う。 使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。 リンク時のライブラリ探索パスは-Lオプションで指定する。 実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。 ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。 新しくライブラリを入れたときはldconfigするといいらしい。 逆に今まであまり知らなかったこと。 ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge

    Linux共有ライブラリの簡単なまとめ - wagavulin's blog
    t-murachi
    t-murachi 2019/03/26
    有り難し…。
  • フリーソフトウェア徹底活用講座

    ◆移り気な情報工学 第62回  地震をきっかけにリアルタイム・システム再考 第61回  海を渡って卵を産む北京の「海亀族」 第60回  超遠距離通信とソフトウェア無線 第59回  IT先進国フィンランドの計画性 第58回  物理的に正しいITの環境対応 第57回  年金,e-チケットに見るディジタル時代の情報原 第56回  「着るコンピュータ」から「進化した布地」へ 第55回  技術を楽しむネットの文化 第54回  情報爆発2.0 第53回  プログラミングの現場感覚 第52回  GPS+LBS(Location Based Service)がおもしろい 第51回  技術の格差社会 第50回  フィンランドに見る,高齢化社会を支える技術 第49回  たかが技術倫理,されど技術倫理 第48回  若者の理科離れ,2007年問題から「浮遊」せよ 第47回  機械のためのWWW――Google

    t-murachi
    t-murachi 2019/03/26
    古い情報だけど、コンパイラオプションによる生成コードの変化から考察が練られているのはとても参考になる。
  • 本の虫: GCCのgit移行が難航中

    GCCはgitへの移行を計画しているが、GCCの既存のsubversionレポジトリをgitレポジトリに変換する作業が難航している。 GCCの移行作業を検証しているのは他ならぬEric S. Raymond(ESR)だ。 ESRお手製の変換ツール、reposurgeonはsubversionからgitへの変換ができる。 Resource page for reposurgeon 3.44 しかしGCCは30年もの歴史を持ち、そのsubversionレポジトリも複雑だ。 ESRはGCCのためにreposurgeonのバグを潰し、勢い変換しようと試みたが、意外な障害に出くわした。メモリ不足だ。 GCC's Conversion To Git Is Being Held Up By RAM, a.k.a. Crazy DDR4 Prices - Phoronix ESRの所有する64GBのメモリ

    t-murachi
    t-murachi 2018/08/01
    「現状だと、今のソースツリーの状態をそのままgitにしていちからはじめるほうがマシかもしれん。歴史は記録だけに留めるとして」うん。つか、それじゃだめなん?
  • Home

    In the world of software, security is becoming a top priority for developers. With technology constantly evolving and online threats increasing Hello, dear readers! My name is Howard Bernier, and it's my pleasure to welcome you to my fascinating corner of the virtual space dedicated to a topic that is becoming increasingly important in software development. Software development is an exciting and

    t-murachi
    t-murachi 2014/08/06
    Mingw-w64 を使いたいならこいつを入れるのが現状一番手っ取り早いっぽい。
  • GCC 4.9がリリースされました - Faith and Brave - C++で遊ぼう

    GCC 4.9.0 released, full of improved C++11 and C++14 features C++14対応が主ですが、C++11にも、以下のサポート改善が入っています。 <regex>をサポート <map>、<set>、<unordered_map>、<unordered_set>に、ステートフルアロケータのサポートを追加 <regex>は、昨年のGoogle Summer of Codeで学生さんが実装したものですね。お金を出してくれたGoogleと、実装してくれたTim Shenさんに感謝です。 Google Summer of Code - GCC Wiki オンラインコンパイラWandboxでも、すでにGCC 4.9を使える状態になっています。 Wandbox

    GCC 4.9がリリースされました - Faith and Brave - C++で遊ぼう
    t-murachi
    t-murachi 2014/04/23
    あとで試す: 「<regex> をサポート」
  • GCC 4.9リリース

    GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。少なくとも、公式Webサイトのトップページからは、リリースされたことになっている。ただし、なぜかリンクをたどると GCC 4.9 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) GCC 4.9がリリースされた。興味深い変更点を上げると。 大昔の、もはや保守もテストもされていないようなプラットフォームのサポートがobsolete扱いになった。もし、活発な活動が行われない場合、次のリリースでは取り除かれるそうだ。特に、Solaris 9が挙げられている。 Cla

    t-murachi
    t-murachi 2014/04/13
    Ubuntu 14.04 には… 入らんかなぁ…。
  • goto fail、到達しないコードにVC++で警告を出す - イグトランスの頭の中

    ここ最近、Appleの例のバグで大盛り上がりですね(Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス? | アプリオ)。 さて問題になったようなコード、Visual C++でも警告は出るよね、という確認です。 int ReadyHash(void*, void*); int SSLHashSHA1_update(void*, void*); int SSLHashSHA1_final(void*, void*); int sslRawVerify(); void f() { int SSLHashSHA1; int hashCtx; int clientRandom, serverRandom, signedParams; int hashOut; int err; if((err = ReadyHash(&SSLHashSH

    goto fail、到達しないコードにVC++で警告を出す - イグトランスの頭の中
    t-murachi
    t-murachi 2014/03/24
    「なお、GCCでは-Wunreachable-codeオプションを使えば良いそうです」
  • GCC 4.8のリリースノートとC++関連の変更

    GCC 4.8 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) GCC 4.8のリリースノートから興味深い点を紹介する。 まず、GCC 4.8は、C++で書かれるようになった。これはつまり、GCC 4.8のビルドには、C++03に準拠したコンパイラーが必要になる。 GCC 4.8は、ループ最適化の方法として、ループ回数の上限をaggressiveに解析するようになった。これは言語規格で許されている範囲の実装である。これにより、既存の規格違反のプログラムが正しく動かなくなる。たとえば、SPEC CPU 2006の464.h264ref (H.264のリファレンスエンコーダーを流用したSPECのベンチマーク)や、同じくSPECのベンチマークである41

    t-murachi
    t-murachi 2013/03/26
    1x じゃなくて 1y なのね…^_^;
  • GCC 4.8でぶっ壊れるSPECのお粗末なコード

    の虫: GCC 4.8のリリースノートとC++関連の変更で、GCC 4.8は464.h264ref: SPEC CPU2006 Benchmarkを壊してしまう。これはSPECベンチマークの規格違反によるものであると書いた。では、具体的に何なのか。それを解説している記事を発見したのでかいつまんで紹介。 Embedded in Academia : GCC pre-4.8 Breaks Broken SPEC 2006 Benchmarks Regehr: GCC 4.8 Breaks Broken SPEC 2006 Benchmarks [LWN.net] どうやら、SPECベンチマークは以下のようなコードを含むそうだ。 int d[16]; int SATD (void) { int satd = 0, dd, k; for (dd=d[k=0]; k<16; dd=d[++k])

    t-murachi
    t-murachi 2013/03/26
    GCC による最適化の実装がなければ放置され続けた bug だったんだろうなぁ… え、せっかく見つけたのにやっぱり放置し続けるんですか? ひぇ~
  • GCC 4.8がリリースされた - Faith and Brave - C++で遊ぼう

    GCC 4.8 Release Series Changes, New Features, and Fixes C++周りの変更は以下。 言語 thread_localキーワードのサポートを追加。 属性構文のサポートを追加。GCCに元々あった独自属性も、C++11属性の構文で提供されるようになりました。 alignas属性のサポートを追加。 継承コンストラクタのサポートを追加。 C++1yの実験的サポートのために、「-std=c++1y」コンパイルオプションを追加。このオプションをオンにすることで、N3386で提案された「戻り値型を推論する関数宣言構文」が利用可能になります。 ライブラリ(libstdc++) forward_listを、標準のアロケータ要件を満たすよう修正(allocator_traits) this_thread::sleep_for()、this_thread::sl

    GCC 4.8がリリースされた - Faith and Brave - C++で遊ぼう
    t-murachi
    t-murachi 2013/03/26
    gcc もついにここまで来てたのか…。
  • Ubuntu 11.04以降で自前でgccをビルドした場合のアーキテクチャ依存ファイルについて - にゃははー

    Ubuntu 11.04以降で幾つかのアーキテクチャ依存ファイルのパスが変更されてしまい、upstream GCCを自前コンパイルするとインクルードやリンクが通らないという問題があります。 通常、/etc/environmentに CPATH=/usr/include/x86_64-linux-gnu LIBRARY_PATH=/usr/lib/x86_64-linux-gnu などと書いておくと問題ないのですが、悲しいことにsudo経由等うまく環境変数を引き継げない場合にやはりエラーとなってしまいます。 ということでオープンソースなのでデフォルトで見るようにソースを書き換えましょう。 Ubuntu 12.04 amd64環境で、GCC 4.7.1 20120428(prerelease)時点でのdiffが以下のようになります。i686環境の人は追加部分のx86_64-linux-gnuを

    Ubuntu 11.04以降で自前でgccをビルドした場合のアーキテクチャ依存ファイルについて - にゃははー
    t-murachi
    t-murachi 2012/05/02
    ステキステキーw
  • GCC4.8はClangに近づく - にゃははー

    GCC4.8からdiagnostic messageを改良する動きが出ています。 http://gcc.gnu.org/wiki/ClangDiagnosticsComparison GCC4.6からdiagnostic messageの改良が始まっていましたが、これまでのは例えば struct S { ... snip ... } int i; というコードで意味不明なエラーメッセージが出ていたのを、セミコロンが抜けているといった質的なメッセージに修正するといったものでした。 $ cat hoge.c struct S { } int i; $ gcc-4.4 hoge.c hoge.c:5: error: two or more data types in declaration specifiers $ gcc-4.6 hoge.c hoge.c:5:1: error: expec

    GCC4.8はClangに近づく - にゃははー
    t-murachi
    t-murachi 2012/04/27
    ライバルの存在ってすばらすぃ…
  • gcc-4.7におけるnon-satatic data member initializer とthis

    C++11ではnon-static data member initializerが導入され、クラスの初期値設定をよりわかりやすく行うことが出来るようになっています。 struct X { int a = 10; // Xの初期値は10 X() : a(10) /* これと同じ */ {} }; この初期化子ではthisを使用することもできます。 struct X { size_t sz = sizeof(*this); // これは可能 int arr[sizeof(*this)];  // でもこれは不可 }; さて、gcc-4.7では以下のコードのコンパイルが通ってしまいます。 struct X { void f() { struct Y { size_t sz = sizeof(*this); // Yのサイズ int arr[sizeof(*this)]; // エラーのはずだが

    t-murachi
    t-murachi 2012/04/17
    この bug はちょっと恐いな…。
  • tupleのネスト

    利用用途があるかどうかはともかく… tuple<char, tuple<short,  long>> val; auto elem = get<1>(val); このコードはgccでもVCでも問題なくコンパイルできます。 但し、 struct A{}; struct B{}; struct C{}; //… tuple<A,tuple<B,C>>val; auto elem = get<1>(val); このコードはVCだと通りますが、gccだとエラーになります。 コードが悪いのか、gccが悪いのか、はたまたVCが悪いのか。

    t-murachi
    t-murachi 2012/04/05
    なんだろう… gcc がおかしいのかなぁ…?
  • GCC 5はモジュール化できるか

    [Phoronix] Talk Of GCC 5.0 To Be Modular, More Like LLVM David Malcolm - GCC 5? (was Re: GCC 4.7.0RC: Mangled names in cc1) 聞説、今のGCCのコードは、やや悲惨な部類に入るらしい。十分な実績があり正しく動くのは確かだが、コードはほとんどCで書かれており、名前空間もなく、グローバルな状態が多く、スレッドもない。これはつまり、GCCは他のソフトウェアに組み込むのが難しい。 一方、LLVMは、設計段階からモジュール化を念頭に置いており、GCCよりはるかに後発なのにもかかわらず、他のソフトウェアに組み込む用途で広く使われている。たとえば、 MesaのGallium3Dとか、OpenCLとか、Monoとかで、JITコンパイルを実現するために、すでに使われている。他にもLLVMを

    t-murachi
    t-murachi 2012/03/21
    humm... やっぱり未来は clang の方が明るいのかなぁ…。
  • Boost.Context でジェネレータを作る - iorate's blog

    知らないうちに Boost.Context が trunk 入りしていたので,それを使って Python のジェネレータのようなものを作る CRTP クラスを書いてみました. generator.hpp メンバ関数 generate を実装するとジェネレータを作り上げてくれます.ジェネレータは,遅延評価される range として振る舞います. 以下の例はフィボナッチ数列を返すジェネレータを作るものです. #include <iostream> #include <tuple> #include "generator.hpp" struct fib : iorate::generator<fib, int> { int max; explicit fib(int max) : max(max) {} template <class Context> void generate(Context

    Boost.Context でジェネレータを作る - iorate's blog
    t-murachi
    t-murachi 2012/03/13
    これは素敵。 / ていうか gcc ってもう 4.8 が出てたのね…
  • constexpr 関数内ではローカルクラスが定義出来ない - C++でゲームプログラミング

    実は勘違いしていた C++11 の仕様シリーズ。 タイトル通りなんですが、constexpr関数内ではローカルクラスを定義することは出来ません。 constexpr int func(){ // clang3.1 error: types cannot be defined in a constexpr function class X{}; return 10; } そんな感じでこれをそのまま使うのはボツかなぁ…。 まぁ関数の外でクラス定義してしまえばいいんですが。 ちなみに gcc4.7 だと上記のコードでも問題なく動いてしまいます。 [おまけ] ついでなので『constexpr でエラー出力』を clang3.1 でも試してみました。 [ソース] struct error_division_by_zero{ int operator()() const{ throw("divisio

    constexpr 関数内ではローカルクラスが定義出来ない - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/03/05
    GCC いろいろできすぎだろ… 気を付けないとなぁ…。
  • そんなものはなかった - C++でゲームプログラミング

    最近ちょくちょく使っていた戻り値型を省略して lambda expression 内にローカルクラスを戻り値型にする方法は gcc や clang の独自拡張だったんですね…。 正確にいえば、戻り値型を省略する場合は、return 文1文だけしか記述することができないみたいです。 最近 lambda expression 使い始めたので知らなかった…。 constexpr オワタ。 と、いうことでまた何か考えないとダメだなー。 いろんな所でクラス書きたいです…。

    そんなものはなかった - C++でゲームプログラミング
    t-murachi
    t-murachi 2012/02/25
    確かにこれ、gcc 使ってると忘れがちになる…。 >「戻り値型を省略する場合は、return 文1文だけしか記述することができない」
  • std::to_stringはlocale指定の影響を受けるのか、またどういう書式なのか気になった - イグトランスの頭の中

    C++11のto_string関数について調べていました。タイトルに書いたとおり、locale指定の影響と、書式の2つを知りたくなったためです。 このコードを動かしてみましょう。これは、Linux上のGCC 4.6.2 (glibc + libstdc++)で動かしました。 #include <iostream> #include <string> #include <locale> #include <clocale> #include <cstdio> int main() { double x = 1234.56; std::cout.imbue(std::locale::classic()); std::setlocale(LC_ALL, "C"); std::cout << "C:\n"; std::cout << '\t' << x << '\n'; std::cout <<

    std::to_stringはlocale指定の影響を受けるのか、またどういう書式なのか気になった - イグトランスの頭の中
    t-murachi
    t-murachi 2011/12/31
    VC++ 相変わらずだな…