Cygwin + MinGW + GCC 相談室 Part 8 (987レス)
1-

1: 2014/09/23(火)00:20 ID:G97CLCj1(1) AAS
Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。

過去スレ:
Cygwin + MinGW + GCC 相談室 Part 7
2chスレ:tech
Cygwin + MinGW + GCC 相談室 Part 6
2chスレ:tech
Cygwin + MinGW + GCC 相談室 Part 5
2chスレ:tech
Cygwin + MinGW + GCC 相談室 Part 4
2chスレ:tech
cygwin + mingwn + gcc 相談室 Part3
2chスレ:tech
cygwin + mingwn + gcc 相談室 Part2
2chスレ:tech
cygwin + mingwn + gcc 相談室
2chスレ:tech

関連サイト:
Cygwin 外部リンク:www.cygwin.com
MinGW 外部リンク:www.mingw.org

関連スレッド:
GCCについて part10
2chスレ:tech
2
(1): 2014/09/23(火)00:41 ID:lJUlk5yi(1) AAS

3: 2014/09/26(金)16:15 ID:SVlqbnuI(1) AAS
MinGW のgccを起動するとPentium MMX環境では不正な処理で落ちます

i586では動かないのでしょうか?
だとしたらどうしたらいいですか?

Windows 2000 SP4
4: 2014/09/27(土)01:02 ID:xVWZeovL(1) AAS
とりあえず古いのを使えば?
5: 2014/09/30(火)05:45 ID:SzM3wmnu(1) AAS
Mergedoc 2004/09/26 出てた
というかこのトップページいつもユーザーが1300人以上いるんだけど攻撃でも受けてんの?

外部リンク:mergedoc.sourceforge.jp
6
(1): 2014/10/07(火)23:24 ID:3K4niACL(1) AAS
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はないと言われるし。
7
(1): 2014/10/11(土)02:54 ID:MWJOKHG8(1) AAS
>>6
専用DLLが必要なやつは、バッチファイルから起動するとか。
(バッチファイルの中でだけPATHを通す)
8
(1): 2014/10/11(土)07:26 ID:WidckbgP(1/2) AAS
バイナリでかくても
結局実行するとそれだけメモリ食うんだろ?
9
(1): 2014/10/11(土)11:41 ID:V7QeocKp(1/2) AAS
>>8
shared library全否定やな、それ
10
(1): 2014/10/11(土)11:41 ID:V7QeocKp(2/2) AAS
>>7
それすると、パイプで繋ぐような使い方ができないんで。
11: 2014/10/11(土)13:51 ID:VDc8fu3q(1) AAS
>>10
bat/cmdファイルってそんな制限があったのか
だったらシェルスクリプトはどうかな
12: 2014/10/11(土)14:01 ID:fBQFLqt8(1) AAS
ないよ。
13: 2014/10/11(土)22:08 ID:WidckbgP(2/2) AAS
>>9
そうなんだけど
質問読んでると
同時実行してるとも思えなかったもんで
14: 2014/10/14(火)20:52 ID:oJt7bxM1(1) AAS
まともなOSのメモリマッピングならデマンドページングするだろ
15: 2014/10/17(金)09:28 ID:tyCwBko4(1/2) AAS
MinGW

> objcopy -h

> libintl-8.dll がねーぞゴルァ!

よそから持ってこなきゃだめなん( ゚д゚)?
16
(1): 2014/10/17(金)15:11 ID:gouFXgPa(1) AAS
しばらく前にMinGW更新したら、同じようにそのDLLでエラーになったな。
古いアーカイブファイルから復帰させたけどどうやるのが正しいのやら。
17: 2014/10/17(金)16:34 ID:tyCwBko4(2/2) AAS
なんかgitに入ってたからそこからコピったら動いた。
>>16
よくわかんないよね
18: 2014/10/19(日)23:35 ID:mp40xGFQ(1) AAS
そんなことよりもお前らmsys2 + pacmanは使ったか?
あれはいいものだ
19: 2014/10/26(日)08:34 ID:axjCVmEg(1) AAS
ディレクトリを選択して右クリックの 送る から cygterm+putty を開くにはどうすればいいのでしょうか?
20: 2014/10/30(木)11:08 ID:dIih4uCY(1) AAS
cygwinでは npm init がエラーになるんだな
ちょくちょく独特なトラブルが起こるからいまいち使いにくい
21: 名無しさん@そうだ選挙に行こう 2014/12/13(土)19:05 ID:yqGWGgnp(1) AAS
久々にTDMの更新来てるねー
22: 2014/12/19(金)20:07 ID:TVDdwTgk(1) AAS
msysはなんか一時期まともにインスコできない時期があったので、
cygwin64にcygwin, cygwin32, mingw32, mingw64のコンパイラ入れまくりに落ち着きつつある。
結局windwosネイティブのdll使うにはmingwじゃないとダメだしクロスコンパイルしまくりでやはり面倒ではある。
23
(5): 2014/12/23(火)12:58 ID:wtjAlw23(1) AAS
x265をコンパイルできるFFmpegをビルドするためにMinGW + MSYSを以下のサイトからダウンロードして
Windows7に入れました。

外部リンク:xhmikosr.1f0.de
MSYS_MinGW-w64_GCC_492_x86-x64_Full.7z

早速x265のコンパイルをしようと以下のサイトを参考にしたのですが、
外部リンク:qiita.com
hg, cmakeが必要とのことです。(Linuxには疎いのでhgやcmakeがどういうプログラムなのかいまいち分かりませんが)
デフォルトのMinGW + MSYSにはhgやcmakeは含まれていないようです。
hgやcmakeを使えるようにするにはどうしたらいいでしょうか?
24: 2014/12/23(火)23:02 ID:40EW/Y2H(1) AAS
MinGWはこっちの方がよくね?
外部リンク:sourceforge.net

hgは
外部リンク:takuya-1st.hatenablog.jp

ここが参考になるかな
25: 23 2014/12/24(水)21:54 ID:8/ZOVusd(1/2) AAS
ありがとうございました。おかげさまでhg, cmake, ついでにgitまで使えるようになりました。
> MinGWはこっちの方がよくね?
MSYSを別途導入する必要があるようだったので>>23のMSYS_MinGW-w64_GCC_492_x86-x64_Full.7zを使うことにしました。

ところでffmepgのコンパイルをしていて些細な疑問を持ったのですが、
外部リンク:d.hatena.ne.jp
のサイトを参考に音声コーデックの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は通りました。
26
(1): 23 2014/12/24(水)21:55 ID:8/ZOVusd(2/2) AAS
調子に乗って「fdk-aacだけでなく最近はやりのOpusという音声コーデックもマージしよう」と
外部リンク[gz]:downloads.xiph.org
をダウンロード&展開し、
 ./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が通ることが分かりました。
外部リンク:qiita.com

fdk-aacはPKG_CONFIG_PATHをエクスポートせずとも良くて
OpusはPKG_CONFIG_PATHをエクスポートしないとconfigureが通らないのはなぜでしょうか?
27
(1): 2014/12/26(金)21:04 ID:OP/Bn95j(1) AAS
Wikipediaに書いてあるじゃん

外部リンク:ja.wikipedia.org

まあ要するにコンパイルフラグをいじらなくて済むという話では
28: 2014/12/27(土)13:54 ID:BCIPL5E0(1) AAS
MSYS2 Avira で TR/Crypt.XPACK.Gen2 連発するから困る
29
(1): 2014/12/29(月)09:28 ID:mY3AFavo(1) AAS
>>26
pkg-configにコンパイル時のフラグを調べるためのデータを置く場所を教えるため。
てか、そこまで出来てるくせに勘が悪いな
30
(2): 23 2014/12/29(月)11:52 ID:m849QDq1(1) AAS
>>27
>>29
コンパイル時のフラグの格納場所でしたか。
不思議なのはfdk-aacはPKG_CONFIG_PATHの場所を教えなくても問題無く進み、
Opusのときはきちんと提示してやらないと進まなかった点です。
二つは仕組みが違うんでしょうか?
31
(1): 2014/12/30(火)12:28 ID:NSL+ZZg4(1) AAS
>>30
デフオルトの場所にあれば教えんでも工工わな
32
(1): 23 2014/12/30(火)16:47 ID:tC9GpZ1z(1/2) AAS
>>31
fdk-aacもOpusも共に
 ./configure --prefix=/mingw/i686-w64-mingw32
とconfiguraしています。だから同じ /mingw/i686-w64-mingw32 にライブラリは格納されてるはずなんです・・・
Opusだけどっかイレギュラーな場所にライブラリをコピーしちゃってるんでしょうかね?
33
(1): 2014/12/30(火)21:17 ID:NhJ3bWE9(1) AAS
>>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 を設定する必要がある。
34: 23 2014/12/30(火)22:10 ID:tC9GpZ1z(2/2) AAS
>>33
そういうことでしたか・・・
そういうの詳しい人が身近にいてくれると助かるんですが・・・
35
(2): 2015/01/04(日)16:52 ID:BvegMGE7(1/5) AAS
cygwin64上で作業をやっとります。

故あって32bitコードを書かねばならないのですが、
i686-w64-mingw32-gcc, i686-pc-cygwin-gcc共にfopenでPOSIXパスを渡すと、
errno=2, No such file or directory
ということで開けません。
windowsパスにすると開けます

ダメ fopen("/home/foo/bar.txt", "r");
OK fopen("c:/cygwin64/home/foo/bar.txt", "r");

mingwでは仕方ないかとは思いますが、cygwin32までPOSIXパスを否定されると辛い。
objdumpで見ても、fopenはcygwin1.dllのものを使用している模様。
PATHは/usr/i686-pc-cygwin/sys-root/usr/binを通してあります。

POSIXパスを認識させる良い方法がありましたら御指南願います。
36
(1): 2015/01/04(日)16:57 ID:Qu74iV3W(1) AAS
>>35
これはコンパイラでなく、OSの仕様。
windows OSの仕様を変更させるか、コンパイラ改造するしかないんでは?
認識できるわけではないが、簡単なのは自作ラッパーを挟む。
37
(1): 2015/01/04(日)17:25 ID:tnXQTL6U(1/2) AAS
>>35
Cygwinの32bitと64bitだとルートディレクトリが違うからじゃね?
32bitコード書くならCygwin32上で作業した方がいいのでは。
38
(1): 2015/01/04(日)18:42 ID:BvegMGE7(2/5) AAS
>>37
windows8でcygwin32使うとfork errorでまくりでコンパイルが進まないorz
39: 2015/01/04(日)18:44 ID:BvegMGE7(3/5) AAS
>>36
いやいや、cygwin64環境、cygwin32環境でネイティブのgccを使うとPOSIXパス使えるんだわ。
ところが、cygwin64環境でcygwin32(i686-pc-cygwin)だと使えないわけで。
32bit版cygwin1.dllがルートパスをどこと認識してるか、ってところなのかな。
40
(3): 2015/01/04(日)20:35 ID:tnXQTL6U(2/2) AAS
>>38
rebaseallやってもforkエラー出まくりなんだとしたらしゃーないな。

cygwin1.dllがあるディレクトリの1つ上がルートディレクトリになってるはず。
単にUnix形式になってさえいればいいのなら /cygdrive/c/cygwin64/home/foo/bar.txt で
開けばいいし、それだとダメならfstabをいじるか
1-
あと 947 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s