Cygwin + MinGW + GCC 相談室 Part 8
MinGW のgccを起動するとPentium MMX環境では不正な処理で落ちます
i586では動かないのでしょうか?
だとしたらどうしたらいいですか?
Windows 2000 SP4 Mergedoc 2004/09/26 出てた
というかこのトップページいつもユーザーが1300人以上いるんだけど攻撃でも受けてんの?
http://mergedoc.sourceforge.jp/ cygwinの64bit gccではLP64のせいか、MS-C向けのDLLがリンクできない。
そこでLLP64のx86_64-w64-mingw32-gccをcygwin上で使っています。
コンパイルしたものを実行するために、/usr/x86_64-w64-mingw32/sys-root/mingw/bin等の専用DLLのある場所にパスを通す必要がありますが、
他の普通にcygwinでコンパイルしたものを実行する際の邪魔になるのでパスは通したくない。
-staticつければいいけどバイナリがデカすぎる。
なにか、dllのパス名を埋めこむオプションないですかね。
-Rはないと言われるし。 >>6
専用DLLが必要なやつは、バッチファイルから起動するとか。
(バッチファイルの中でだけPATHを通す) バイナリでかくても
結局実行するとそれだけメモリ食うんだろ? >>8
shared library全否定やな、それ >>7
それすると、パイプで繋ぐような使い方ができないんで。 >>10
bat/cmdファイルってそんな制限があったのか
だったらシェルスクリプトはどうかな >>9
そうなんだけど
質問読んでると
同時実行してるとも思えなかったもんで まともなOSのメモリマッピングならデマンドページングするだろ MinGW
> objcopy -h
> libintl-8.dll がねーぞゴルァ!
よそから持ってこなきゃだめなん( ゚д゚)? しばらく前にMinGW更新したら、同じようにそのDLLでエラーになったな。
古いアーカイブファイルから復帰させたけどどうやるのが正しいのやら。 なんかgitに入ってたからそこからコピったら動いた。
>>16
よくわかんないよね そんなことよりもお前らmsys2 + pacmanは使ったか?
あれはいいものだ ディレクトリを選択して右クリックの 送る から cygterm+putty を開くにはどうすればいいのでしょうか? cygwinでは npm init がエラーになるんだな
ちょくちょく独特なトラブルが起こるからいまいち使いにくい msysはなんか一時期まともにインスコできない時期があったので、
cygwin64にcygwin, cygwin32, mingw32, mingw64のコンパイラ入れまくりに落ち着きつつある。
結局windwosネイティブのdll使うにはmingwじゃないとダメだしクロスコンパイルしまくりでやはり面倒ではある。 x265をコンパイルできるFFmpegをビルドするためにMinGW + MSYSを以下のサイトからダウンロードして
Windows7に入れました。
http://xhmikosr.1f0.de/tools/msys/
MSYS_MinGW-w64_GCC_492_x86-x64_Full.7z
早速x265のコンパイルをしようと以下のサイトを参考にしたのですが、
http://qiita.com/pb_tmz08/items/29165f4c3ef9bc4285ab
hg, cmakeが必要とのことです。(Linuxには疎いのでhgやcmakeがどういうプログラムなのかいまいち分かりませんが)
デフォルトのMinGW + MSYSにはhgやcmakeは含まれていないようです。
hgやcmakeを使えるようにするにはどうしたらいいでしょうか? ありがとうございました。おかげさまでhg, cmake, ついでにgitまで使えるようになりました。
> MinGWはこっちの方がよくね?
MSYSを別途導入する必要があるようだったので>>23のMSYS_MinGW-w64_GCC_492_x86-x64_Full.7zを使うことにしました。
ところでffmepgのコンパイルをしていて些細な疑問を持ったのですが、
http://d.hatena.ne.jp/kamedo2/20130619/1371662769
のサイトを参考に音声コーデックのfdk-aacをffmpegにマージしてみました。
サイトに書かれていたとおり、
/FFmpeg/fdk-aac-0.1.1/
に移動して
./configure --prefix=/mingw/i686-w64-mingw32
make && make insutall
を実行し、そのあとffmpegのコンパイルをするべく
cd ../ffmpeg-HEAD-4110828
でffmpegフォルダに移動し
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac
--extra-ldflags=-static --extra-cflags='-march=native -mfpmath=sse' --optflags=-O2
を実行したところ問題無くconfigureは通りました。 調子に乗って「fdk-aacだけでなく最近はやりのOpusという音声コーデックもマージしよう」と
http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
をダウンロード&展開し、
./configure --prefix=/mingw/i686-w64-mingw32
make && make insutall
を実行。その後ffmpegフォルダに移動して、
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-libopus
--extra-ldflags=-static --extra-cflags='-march=native -mfpmath=sse' --optflags=-O2
を実行してみたところ
ERROR: opus not found using pkg-config
Note: When building a static binary, add --pkg-config-flags="--static".
とエラーが返されました。fdk-aacはよくてopusは何でダメなの?訳が分からずググッてみると
ffmpegのconfigureを実行する前に
export PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig"
のおまじないを唱えると問題無くconfigureが通ることが分かりました。
http://qiita.com/tukiyo3/items/ac36375d426d39f203fb
fdk-aacはPKG_CONFIG_PATHをエクスポートせずとも良くて
OpusはPKG_CONFIG_PATHをエクスポートしないとconfigureが通らないのはなぜでしょうか? Wikipediaに書いてあるじゃん
http://ja.wikipedia.org/wiki/Pkg-config
まあ要するにコンパイルフラグをいじらなくて済むという話では MSYS2 Avira で TR/Crypt.XPACK.Gen2 連発するから困る >>26
pkg-configにコンパイル時のフラグを調べるためのデータを置く場所を教えるため。
てか、そこまで出来てるくせに勘が悪いな >>27
>>29
コンパイル時のフラグの格納場所でしたか。
不思議なのはfdk-aacはPKG_CONFIG_PATHの場所を教えなくても問題無く進み、
Opusのときはきちんと提示してやらないと進まなかった点です。
二つは仕組みが違うんでしょうか? >>30
デフオルトの場所にあれば教えんでも工工わな >>31
fdk-aacもOpusも共に
./configure --prefix=/mingw/i686-w64-mingw32
とconfiguraしています。だから同じ /mingw/i686-w64-mingw32 にライブラリは格納されてるはずなんです・・・
Opusだけどっかイレギュラーな場所にライブラリをコピーしちゃってるんでしょうかね? >>30 >>32
疑問を持った時点でffmpegのconfigureの中身を見なさいな。(以下抜粋
> enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
> enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
ライブラリ有無のチェックに、libopusはpkg-configを用いて判定してるってだけ。
なので PKG_CONFIG_PATH を設定する必要がある。