元スレCygwin + MinGW + GCC 相談室 Part 7
gcc覧 / PC版 /みんなの評価 :
102 = :
アーカイブがグチャグチャで構築し難いんだよね
104 = :
ライブラリに関しての質問です。
MinGWでCurlを静的リンクでビルドしていたところ
opensslライブラリのlibcrypto.a(rand_win.o)でgdi32を参照する関数
が未解決とのエラーが出ました。
ググってみるとやはり同じような事例が沢山出てきました。
今のところ、該当関数をコメントアウトしてビルドするしか手段が無い
ようなのですが、opensslのmakefileにもpcにもgdi32をリンクするよう
指示がされているのですが何故無視?されてしまうのでしょうか。
105 = :
そりゃ、スタティックリンクだから
109 = :
x86_64-w64-mingw32-gcc -I./../intl "-DBINDIR=\\f:/bin/work/MinGW64/bin\"
-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wno-format
-Werror -g -O2 -D__USE_MINGW_ACCESS -MT archive.lo -MD -MP -MF
.deps/archive.Tpo -c -o archive.lo ../../bfd/archive.c" -o archive.o
ここで
x86_64-w64-mingw32-gcc.exe: fatal error: no input files このエラーがでました。
'"'の数が合わないのですが、makefileのどこで'"'が混入しているのかわからない><;
110 = :
分かったらまた来てね
111 = :
分かったら来る必要ないだろうがカス
だから聞いてんだろうが
頭イカレてるんか?
112 = :
うーん
bfd/makefile line334 '"$(bindir)"'→'$(bindir)'
それと
cソースが char * debug_filename = bfd_follow_gnu_debuglink (abfd, DEBUGDIR);
makefileが -DDEBUGDIR=\"$(DEBUGDIR)\"で
error: expected ')' before ':' tokenでエラーになります。
cソースのDEBUGDIRが"……"になるようにするにはどう書いたらいいですか?
113 = :
MSYS + MinGW + gcc もここで大丈夫ですか?
今月の同じ日に mingw-get-inst で構築した2つの端末の MSYS 環境があるのですが、
gcc のコンソール出力が一方では日本語表記なのにもう一方だと英語のままという現象に遭遇しています
ビルドそのものは正常に通るので緊急性はないのですが、現在はC99記述ソースの評価ビルド用途のみで
深く触る段階ではないので、簡素に扱うため出来れば解決したいと考えています
/share/locale/ja/LC_MESSAGES/gcc.mo はいずれも正常に見えるので、読みに行く設定に何かが
起きているように思いますが grep をかけても何処を調整すれば良いのかが分かりません
export LC_MESSAGES=ja_JP.UTF-8 を明示的に指定しても変化はありませんでした
端末は同一OSの同一SPで、違いと言えば日本語不可の環境ではインストール先がNTFSでなくFAT32な事位です
他の原因には何が考えられるでしょうか?gcc 4.7.2、MinGW 5.4.2(a) です
114 = :
>>109
configure ... --prefix=f:/bin/work/MinGW64 ...
ならどう?
115 = :
>>114
linkが走りませぬ
/usr/bin/sh: C:binMinGW1.0binworkMSYS64/i686-pc-mingw32/x86_64-w64-mingw32/lib: No such file or directory
118 = :
>>115
エラーメッセージをよく見ろ。あんたの指定したとおりのパスになっているか?
119 = :
もともとconfigureには--prefix=/f/bin/work/MinGW64と書いていて
makefileにはAM_CPPFLAGS = -DBINDIR='"$(bindir)"'こう書かれていて$(bindir)はprefixに書いたものにbinを足したものでしょうか?
makeが実行時に"/の文字の組み合わせを勝手に\\に書き換えてしまうようで、すると"の対が崩れてしまう。
makeはまたも勝手に解釈してbinの後ろの"を\"に置き換えて-DBINDIR=の前とarchive.cの後ろに"のペアを付け加えるので
archive.c"をコンパイル出来ない(そんなソースファイルは無い)というエラーが出ます。
なので"を使わないようにbfd/makefileの334行目を'"$(bindir)"'から'$(bindir)'に書き換えたらmakeが出来ました。
121 = :
新たに分かった事を書きます。
gettext() を使用する簡単な Hello world を作成してみた所、
.mo を /mingw/share/locale/ja/LC_MESSAGES/ に配置し bindtextdomain(, "/mingw/share/locale") としてもやはりNGですが、
<カレント>/ja/LC_MESSAGES/ に配置し bindtextdomain(, ".") とすると正常に変換が行われました。
( bindtextdomain()、textdomain() の戻り値は全て真。念の為 bintextdomain(, "/<MinGWインストール先絶対パス>/share/locale") を試してもNG )
理由は不明ですが、問題の方の端末では何故か gettext() 系から /mingw/share/locale が見えないようです。
( /etc/fstab に異常はなく ls や cp 等の挙動を見ても /mingw/share/locale のマッピング自体は正常と思われます )
原因としては何が考えられるでしょうか。
122 = :
その<カレント>がMinGWのインストール先と異なるドライブレター配下なのでは?
gettext() を擁する libintl は内部で msvcrt._open() を用いて.moを読み込むが、
この際MSYS環境を考慮してパス変換を行っている訳ではなく _open() にパスを丸投げしている
例えば etc/fstab が 'D:\MinGW\ /mingw' であっても
bindtextdomain('/mingw/share/locale') → ×_open('D:\MinGW\share\locale\ja\LC_MESSAGES\gcc.mo') ○_open('/mingw/share/~/gcc.mo')
bindtextdomain('.') → ×_open('.\ja\LC_MESSAGES\gcc.mo') ○_open('./ja/LC_MESSAGES/gcc.mo')
従ってドライブレターが違えばgccを実行してもgcc.moは見えないし、~:\MinGW以外のパスに
MinGWをインストールしても同じ事が起こる
なので常に同じドライブレターでプロジェクトを扱うか、どうしても違うドライブレターを使いたいなら
そのドライブレターに \MinGW\share\locale\ja\LC_MESSAGES ディレクトリを作成して gcc.mo を
放り込む、もしくは subst を使うといい
123 = :
(続き)
蛇足だが同種の話で locale.alias も現在の MinGW 用 gcc 内で正常に処理されていなかったりする
本来は決め打ちで 'c:/MinGW/share/locale/locale.alias' を読むようビルドしたつもりだったっぽいが、
何かのビルド障害があったらしく 'c:MinGWsharelocale/locale.alias' という謎めいたパスを読みに行く ( ゚д゚)
なおこれは gcc に限った話ではなく、自分の取得した版だとMinGW\bin配下の58個のexeの内26個が同じビルド状態になってるっぽい
124 = :
MSYSでやっているのに--prefix=にドライブ指定してちゃんとそのドライブの
指定フォルダにインスコしてくれるのか
'c:MinGWsharelocale/locale.alias'にはワラタ
どうするんだよこれ
125 = :
>>122
ありがとうございます!
なるほどそういう事だったのですね。確かに問題の端末ではビルド対象とMinGWが別ドライブです。
/ドライブ/ 指定で ls、cd、makeとも正しく扱えていたので考えが及びませんでした・・・。
gcc.moを放り込む方法で上手くいったので当面はこれで行こうと思います。
130 = :
mingw-w64-v2.0.7を自前でコンパイルして使ってみたら、___msなんたらが不明
と言われた。おかしいと思ってぐぐったら
http://forum.videolan.org/viewtopic.php?f=14&t=101239
とりあえずライブラリだけTDMのライブラリに入れ替えたら__msに関するエラー消
えたけど、なんでだか分からん、ってかv1とv2の違い自体が分かんねぇ…
134 = :
64bit SEHのインラインアセンブラが死ぬほど難しい。マニュアル見ないとダメだこりゃ
136 = :
TDM4.7ならライブラリのビルドは成功するぞ、ってか今試した
ちなみにウチは、gcc4.8 or 4.9だとライブラリのビルド自体失敗する。
具体的には、cc1plusがハングする。
wxも同様で、wxの場合どっかの海外のBBSで開発メンバーらしき人が4.8じゃ
無理だから4.7使えって書いてあった(それでもパッチ当てなきゃビルドできない
けど)。
なのでFLTK使ってる。
137 = :
おお確かにTDM-GCC4.7.1ならうまくいったわ
(--layout=systemにするとDuplicate nameとか出てダメだけど)
gcc4.8.0で同じようにcc1plusでクラッシュしてた
142 = :
最近のGCCはwin2kサポートしてないの? 作ったアプリが起動できないんだけど
143 = :
>>142
どんなメッセージを見るの?
もしかしてx64のバイナリつくってたり?
145 = :
う、ういるす様のたたりじゃ
146 = :
gcc 2.7.いくつだっけかはc++でコンパイルするとmainに行く前に終わってたな。
-O2つけると浮動小数点演算バグりまくりとか。
みんなの評価 :
類似してるかもしれないスレッド
- Cygwin + MinGW + GCC 相談室 Part 8 (938) - [97%] - 2022/10/28 8:00
- Cygwin + MinGW + GCC 相談室 Part 6 (981) - [97%] - 2012/12/30 23:15
- Cygwin + MinGW + GCC 相談室 Part 5 (981) - [97%] - 2011/4/6 2:32
- Cygwin + MinGW + GCC 相談室 Part 4 (1001) - [97%] - 2010/3/23 18:31 ☆
- Cygwin + MinGW + GCC 相談室 Part 3 (1001) - [97%] - 2008/9/12 0:04 ★
- 【激遅】AppleGCC【絶望】 (111) - [1%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について