タグ

gccに関するhideokiのブックマーク (2)

  • GCC の最適化で printf が puts になる場合 - bkブログ

    GCC の最適化で printf が puts になる場合 GCC の最適化により printf の呼び出しが puts に置き換わることがある、と 先日、教えてもらったので試してみました。 次のような hello.c をまず最適化なしでコンパイルします。 #include <stdio.h> int main () { printf("hello, world\n"); return 0; } % gcc -o hello hello.c そして、実行可能ファイル hello を readelf コマンドで覗いてみると、 printf という文字列が見つかります。 puts は見あたりません。 % readelf -a hello | egrep 'printf|puts' 080495d0 00000207 R_386_JUMP_SLOT 00000000 printf 2: 0000

    hideoki
    hideoki 2005/10/18
    c言語ネタは人気ないらしい
  • リンクと同名シンボル: weak シンボル編 - bkブログ

    リンクと同名シンボル: weak シンボル編 先日の記事では静的リンクの際に同名シンボルの衝突は検出されると書きました。しかし、 weak シンボルが存在すると話は変わります。 次のようなプログラム main.cpp があります。 #include <iostream> class Foo { public: Foo(int x) : x_(x) {} void func() { std::cout << x_ << std::endl; } private: int x_; }; int main () { Foo foo(256); foo.func(); return 0; } このプログラムをコンパイルして実行すると 256 と表示されます。 % g++ -c main.cpp % g++ -o main main.o % ./main 256 ここで、main.cpp とはまった

    hideoki
    hideoki 2005/10/12
    リンカでのシンボルの衝突の問題
  • 1