パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

生き残るフレームワーク、どうすれば選択できる?」記事へのコメント

  • WindowsだとQtとかwxWindowsとかboostみたいな巨大ライブラリはDLLだとパスが関係してきたりするし、
    静的リンクにするにはサイズが大きかったりと扱いづらいと感じます。

    特に、最近は64bitプラットフォームが一般化してきて32bitだけ入れとけばいいと言う訳にはいかなくなってきたので、
    適切なプラットフォーム用のDLLを読ませるためにアプリと同じディレクトリに入れたりすると共有ライブラリの意味が薄らいでしまうし、
    DLL名の衝突を避けられる置き場所が限定されるので共有ライブラリ化には疑問を持っているのですが、
    ビルド済みのライブラリの配布はDLLになっていることが多いですね
    (DLLを使用する設定がデフォルトだったり静的リンクにするとCのランタイムも静的リンクになってしまうとか)。

    フレームワークにも新機能を追加していくから、一度組み込まれた物は簡単に外すことができなくてさらに巨大化してしまうというのもあります。

    • by Anonymous Coward

      いや、それはgccにまつわる問題でしょ。
      VisualC++Express使ってるとサイズが一桁縮みますw
      いまだにファイル名が
      c:\users\myname じゃなくて /c/users/myname/だったりするし 
      なんというかAPI使わずに再実装している部分がでかいのかなぁ。

      5年以上前にwxとMingWの組み合わせで
      GUI版ハローワールドで10MB超えたなあw

      • 5年以上前にwxとMingWの組み合わせで
        GUI版ハローワールドで10MB超えたなあw

        DLLでなく、静的リンクにしたから、とか言うオチじゃないよね?

        親コメント
        • by Anonymous Coward

          いや、静的だろうが動的だろうが、
          最終的に単体配布するなら結局そのサイズ分のインストールになるから
          DLLなら単体は小さいなんて事は重要ではない

          • いや、静的だろうが動的だろうが、
            最終的に単体配布するなら結局そのサイズ分のインストールになるから
            DLLなら単体は小さいなんて事は重要ではない

            それは、コンパイラにgccを使うか、Visual C++ Expressを使うかで変わる問題か?
            wxはよく知らないけど、wx+gccの組み合わせと、wx+Visual C++ Expressの組み合わせで配布する容量はそんなに違うの?

            親コメント
            • by Anonymous Coward

              うん ひとけた違う
              理由は謎

              • うん ひとけた違う

                MinGW環境のつもりが、Cygwin環境だったとかじゃない?

                一桁って、絶対値ではいくらくらいよ?

                理由は謎

                リンクしているライブラリが違うのか、リンク前のオブジェクトファイルのサイズが違うのか、くらいは判るだろ?
                *.exeがリンクしているDLLは、Cygwin環境があれば

                objdump -p 《*.exeファイル名》

                で調べることができるぞ。

                あと、まさかとは思うけど、デバッグオプションの違いとかじゃないよな?

                親コメント
              • by Anonymous Coward

                何年も前にVCExpressに移行しちゃったし、
                Win32++というフレームワークに乗り換えから
                テスト環境も何にも無い。
                もうwxを使えるカラダじゃないw

                ただ、gcc+wxのバイナリをダウンロードすれば
                今でもサイズが大きいのがゴロゴロしている。
                VCで1MB超えるexeってあんまりないけど
                gcc+wxなら10MBクラスがざらにある。

              • もうwxを使えるカラダじゃないw

                使う必要のない方法を書いたつもりだけど、解らなかった?

                なんてーのかなー。それはコンパイラのせいじゃないと思うなあ。
                いくらなんでも、コンパイラの差だけで、10倍以上もサイズに差が出るとは思えない。
                やっぱり、あるとすれば、リンクしているライブラリの差じゃない?
                そうでないとすれば、コンパイラオプションが違いするぎるとか。

                親コメント
              • by Anonymous Coward

                VCで自前ビルドしたRuby1.9のbinの下が1.2MB(これでstatic link)
                usbrumix2のzipのbinの下が9MB

                公平な条件じゃないけどね、今も一桁違う予感。

              • VCで自前ビルドしたRuby1.9のbinの下が1.2MB(これでstatic link)

                ふーん。
                ちなみに、CentOSのRubyは、

                $ ls -lh $(which ruby)
                -rwxr-xr-x 1 root root 5.8K Mar  8  2013 /usr/bin/ruby
                $

                だけどな。もちろんこれは、gccでコンパイルされている。
                何が動的にリンクされているかと言うと、

                $ ldd $(which ruby)
                        linux-gate.so.1 =>  (0x0035d000)
                        libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0x00658000)
                        libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x0063c000)
                        libdl.so.2 => /lib/libdl.so.2 (0x00620000)
                        libcrypt.so.1 => /lib/libcrypt.so.1 (0x047bc000)
                        libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x005f5000)
                        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x00493000)
                        /lib/ld-linux.so.2 (0x00474000)
                $

                とまあ、予感ばかりに頼ってないで、こういう風に調べてみたらどうなる? 意外な結果が出るかもよ。

                親コメント
              • by Anonymous Coward

                staticリンクのMSVC版RubyをdependsというツールでDLLを追跡すると
                msvcr100-ruby191.dll(1.2MB)
                KERNEL32,USER32,ADVAPI32,SHELL32,WS2_32,IMAGEHELP,MSVCR100
                これだけ。

                usbrumix2だと
                msvcrt-ruby200.dll(2.2MB)
                上記にSHELL32,SHLWAPIが加わり、
                MSVR100がMSVCRTに変わる。

                DLL関係が違うだけなのに、倍のサイズ取ってるね。

              • DLL関係が違うだけなのに、倍のサイズ取ってるね。

                より正確には、1.8倍強だね。その程度なら十分考えられる範囲。

                で結局、「一桁違う予感」とやらは当たってなかったね。
                # その一桁が二進数なら当たってるけどさ(笑)。

                親コメント

人生unstable -- あるハッカー

処理中...