Cygwin + MinGW + GCC 相談室 Part 8
プリプロセッサのcppのソースはどこにあるのか!? MSYS2のwindresとcppをコピーして、自分のプログラムで使いたいんだけど、 windres.exeとcpp.exeを正しく実行するにはどうすればいいでしょうか? 最小構成にしたいと考えています。 include lib とexe で試す 足りないものは追加 >>292 ありがとー、コンパイルできるようになった。 msys2で取得したgtk(gtkmm)をcmakeでmakeファイル作ったり code::blocksでmsys環境外で利用したりがやっとわかってきた 具体的にはpacmanで取得するmakeやpkg-configはmsysではなく mingwで統一しないとダメらしい しっかし何でGTKはバイナリのダウンロード止めちまったんだろうねえ? いやまあ確かに更新はmsys2のpacmanでやった方が楽だろうけどさ code::blocksのプロジェクトテンプレートが使えないとか IDE使った導入に問題がある msys2のpacmanで取得したwxWidgets試してみたがコンパイルして実行してみるとエラーが出て駄目だった なんかMismatchがどうとか しようがないのでソースからビルドしたら今度は実行出来た 外部のIDE使うときはwx-configの出力結果をprefix調整してコピペ しかしコンパイラのバージョン合ってないと起動できないとかシビアだな 毎回ライブラリをビルドし直さないとならないって事か まあwxはcode::blocksと相性良さそうなんで使ってみます hoge.dll から hoge.a を得るにはどうすればよいですか? hoge.def はありません また hoge.dll 用の hoge.lib もあるので hoge.lib から hoge.a を得る方法でもいいのですが ご存知でしたら教えてください Cygwin,MingW環境に限らず(まっとうなやり方では)どうやってもできません .dllファイルは構造的には(特殊な).exeファイルと同じで 元になったオブジェクトファイルの情報は失われているので 構造的にはオブジェクトファイルの集合体(コンテナ)である .aファイルへの変換・作成に利用することはできません mingw DLL リンクで検索すれば何か分かるか 普通にdllを使いたいって話だったのかな? それならMingWのldは.libのインポートライブラリもサポートしてるはずなので .libがあるならわざわざ.aファイルを用意する必要はないはずですよ >>305 はdll->スタティックライブラリに変換->完全な静的リンク(実行時にdllを必要としない)を 考えている場合のものでした https://stackoverflow.com/questions/8683046/compatibility-of-dll-a-lib-def-between-visualstudio-and-gcc dlltool.exe -m i386:x86-64 -d libhoge.def -D hoge.dll -l libhoge.a dlltool.exe -m i386 -d libhoge.def -D hoge.dll -l libhoge.a しらんけど インポートの定義は自分でヘッダファイルとか見て書かないといけないんだっけ? そこまでするなら LoadLibrary GetProcAddress とあんま変わらないんだよな 面倒だからやりたくないんだよな GNU GDB 7.2 snapshot - with rudimentary TDS (Turbo Debugger Symbol) format support (originally written by Troy Rollo) obtained from old mail list postings, and migrated to this snapshot with some corrections and slight enhancement. https://sourceforge.net/projects/gdbwtds/ MinGW w64入れようとしてInstalling FilesでDownloading file...となってるときに "The file has been downloaded incorrectly!"って言われてインストール失敗してたけど ユーザー名に2バイト文字使われてたのが原因だった path tmp=c:\tmp とかに変わってても出るかな w64はインストーラ使わずに7zを直接落として使ってるわ。 XPのPCで、mingw-get-setup.exe起動してMinGW+MSYSをインストールしようと 思ってるんだけど、「cannot open URL」と出てインストールできないんだけど、 対処法ありますか? 同じNW環境のWindows 7、10ではインストールできてます ブラウザから、prdownloads.sourceforge.netのURL(〜?downloadってついてるサーブレット?)へ アクセスすると、インストーラが落とそうとしているパッケージはダウンロードできます でもインストーラは、〜.xzなパッケージをダウンロードできない、ようです >>317 ユーザー名が2バイト文字になってるとか >>318 情報どうもです ユーザ名ですが、1バイト文字のみです 317です >>320 さすがに色々と設定されているので今からは… >>321 いえ、Proxy環境ではありません Avastとか切ってもやってみたのですが、相変わらずインストールが成功しません… パッケージ類をwgetとかで手元に置いといてローカル環境からインストール、みたいなこと できるのかな… >>322 インストーラはOSの、てかIEの機能使ってパッケージをダウンロードしてる んで、XPのIEってIE8だろ SourceForgeとのTLS1.1とか1.2でのネゴシエートみたいなのができないからだろうな サイトもまともに見れないのでは 32ビット環境のWindows10でインストールされたフォルダを丸ごとXPにコピーしたらどうだろう >>322 別のPCかVM環境用意してそこでクリーンなOSで試すんだ それでうまく逝かないんなら時間の無駄 317です クリーンインストールしたXPで再度試してみましたが、NGでした >>323 これが真の理由のようです IE8ではSourceForgeのページも表示されませんでした インストーラじゃなくminge-get単体で使えばいい mingw-get updateしてから(mingw)\var\lib\mingw-get\dataの中を見れば必要なものは大体分かる # # echo foo | sed -e 's/foo/bar/' bar ✔ Success (retv = 0) # # echo foo | perl -pe 's/foo/bar/' ✗ Failure (retv = 127) # # which perl /usr/bin/perl >>327 ファイル/usr/bin/perlが壊れてるんじゃねえのかな perl -vってやって起動するかえ? >>328 起動しませんでした apt-cyg remove perl apt-cyg install perl で解決しないから困りました 失礼しました # perl -v ✗ Failure (retv = 127) それはないかと # which perl /usr/bin/perl ✔ Success (retv = 0) # # /usr/bin/perl -v ✗ Failure (retv = 127) 環境がよくわからない。failureとかの文字はshellが出してる? 多分シェルがだしてる このcygwin は gnupack_devel-13.06-2015.11.08 のを使っています 今気が付いたのですが gnupack のはポータブルなので 新しくダウンロードした方にhome 以下移したら apt-cyg install xxx などの手間はかかるけどperl 動きますね 今回はそれでOK お騒がせしました 手元の mingw32/g++ 6.4 で仮想デストラクタがらみがうまくいかない現象が起きています mingw32/g++ 5.4 ベースに戻すとうまくいくようです なにか情報ありませんか? >>337 モジュール名が更新されており、libstd++ ともども cygwin のモジュールを削除した上で新しく入れなおすことで解消しました mingw64-g++6.4 で問題ありません お騒がせいたしました Perlをmingw(windows7)でビルドできた人いる? どうやったのか教えて欲しい ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ スカトロMinGWがいち早くgcc7.3.0になったな 最近MSYSがまともに動かないリリース連発してて萎えるわ みんなWSLに移行したのかね >>342 更新失敗してない? msys-2.0.dll (msys2-runtime) pacman.exe (pacman) bash.exe (bash) この辺はいつも削除失敗で手動でコピーするはめになってる 人によってはターミナル系もかな これまでMSYS2と仮想マシン上のLinuxを両方使っててWSLも試してみたけど WSLだけで全部賄うのは無理だし、MSYS2の代わりになるかも微妙だと思った cygwinってハードの最低動作環境ってどんなもん? セレロンG1610でも十分動く? LLVM Clangって、見つけたんですよ gccより高速で、エラーの内容がわかりやすいんだけど なんで、gcc使い続けてるの? ゼロから作るんならClangでも良いけどgccでコンパイルできる ソースが必ずしもClangでコンパイルできる訳ではないからでは visual styleのマニフェスト設定がわからん。。。教えてくれよ。 スクリプト走らせてるとusememが肥大化してしまうのですが Cygwinのメモリ開放ってどうやるんでしょうか? >>353 ありがとうございます ただ、topなどで確認してもプロセスが占有してるというよりはよくわからないけどfreeのメモリが消費されてるといった感じなんです あきらめて別の方法を探してみます スカトロMinGWを消してMinGW W64 7.3.0を入れた ようやく来たか i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z MD5 d1e009df8d254a15a549c5af2e2200db SHA-1 96e11c754b379c093e1cb3133f71db5b9f3e0532 ↑ これ、カスペが反応するんだけどみんなのところではどうよ C:\mingw32\opt\bin\python.exe トロイの木馬 >>356 カスペはわりと誤検知を是とする製品だね 除外リストに入れてやるしかないと思う msys2 64bitとcygwin64両方ともautomakeを使おうとすると ラッパーさんから使えるバージョンはないとか怒られて終わります これのせいでautoconfとかも途中で終わるのでつかえません 調べまくりましたが途方にくれました何かアドバイスを ちなみにautoconfは普通にバージョン見ると2.69で automakeは1.10から1.9までたくさん入っています 他のlibとかも全部入れたと思います 調べたらラッパースクリプトがバージョン判断出来なくてコケるみたいなのを見たんですが そのへんがよくわかりません sygwinは分からんけどmsysはpacmanで入れたモジュールなのかな 普通にpacmanで作った環境では特に問題なくautoconfできるけど >>359 pacmanで入れました (どうしてもPGP鍵のエラーを解決出来なかったのでsiglevel無理やり変えたけど) 自分が信用出来ないので複数の入門用サイトのインストール手順そのままなぞっても変わらず cygwinは普通にsetupから入れました autotoolなど使わないで普通にコンパイルするだけなら普通に出来ます 最初はemacsとかでかいのをやろうとしたのですが、ハローワールド的なプログラムで 試しにやってみてもautoreconf等やはりautomakeのところで引っかかって終わります msys2とcygwin両方とも同じというのが何故なのかわからないです msys2の入口はどのみち3種類どれでやっても結果は変わらないです am-wrapperに使えるバージョンが無いって怒られます pacmanの入れ方が駄目だったんでしょうか あれ?鍵の更新も出てるメッセージの通りにやれば出来なかったっけ? 鍵は特に指示するようなメッセージはないです 暗号エンジンが不正とかパッケージが壊れてるとか鍵が不正とかそれだけで とりあえず適当にautomakeを打つと $ which automake /usr/bin/automake $ automake am-wrapper: automake: error: Unable to locate any usuable version of automake. I tried these versions: With a base name of '/usr/bin/automake'. msys2とcygwin64両方同じです これは正しい反応なのでしょうか 今気が付いたんですが $ automake-1.10 とか直接やると当たり前かもしれませんがconfigure指定しろと動くので やはり選択出来てないみたいです あと調べるとWANT_AUTOMAKEでバージョン指定出来るみたいなので それでautomakeするとエラーは出ないです 調べてもこんなところでつまずいてる人誰もいないみたいなのに何故… I tried these versions: With a base name of '/usr/bin/automake'. おかしいね MSYS2 からだと /proc/registry を見ればレジストリの内容を読めるけど、 レジストリの設定はどうやればいいの? 上で長々とautomakeについて書いたものですが 最後に念のため全部管理者からにしてインストールから全て自分の知識を一切使わず ぐぐったやり方に沿ってやりなおしたところやっぱり結果は同じでした バージョン指定してautomakeを突破してもautom4teのエラーが出たりするので とりあえず素直に諦めました 変なことは特にしてないと思うんですが…根本的に何かおかしいんでしょうね 一連の書き込み見て、もし何か気が付いた方いましたらよろしくお願いします まずMSYS2とCygwinで同じ状況というので疑われるのは環境の混在 きちんと分離できていれば両方同じ結果にはならないと思う 他のアプリを含めてWindowsのグローバルな環境変数を汚さないようにするかあるいは完全に把握してればこの手の問題は起き難い >>369 もしかしたら何か環境被ってるか影響受けて駄目なのかもしれないですね 両方全く一緒っていうのが… 今度時間空いたらまっさらなOSにでも入れてみようと思います まずは環境変数からCygwinを除去してみるところからだろ そもそもWindowsの環境変数に混在させるのは良くない 必要な設定はシェルを起動するbatファイルにでも書いて切り分けをはっきりさせた方がいい コンパイラ g++ が-l オプションにてライブラリをサーチしてくれません cygwin 上でのパス:/usr/loca/lib/libcppunit.a 実パス U:\usr\system\cygwin\usr\local\lib\libcppunit.a をコンパイルオプション -l で見つけてくれるようにすればどうすればいいでしょうか? >>373 とりあえずコンパイラの -L オプションで凌ぐことにしました >>374 コメントありがとうございます それは大丈夫でした >>375 勘違いしている気がするのは気のせいかな 「-l」はリンクするライブラリの「lib」を除いた名称を 指定するためのオプション そのライブラリを検索する場所を指定するオプションが 「-L」じゃなかったっけ コンパイルオプションとリンクオプションは区別しろよ >>377 はい、-L usr/local/lib -lcppunit とベタ打ちすることにしました cygwin の環境変数を触るのはあきらめました… >>379 LD_LIBRARY_PATH の設定で上手くいかないの? >>380 それが手元のWindows7環境ではうまくいかないのです… googleとかから資金と技術者が流れこんだかな? なんとしても__cplusplusを201703にするべく頑張ったんだろうなあ read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる