Cygwin + MinGW + GCC 相談室 Part 8
>>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にするべく頑張ったんだろうなあ 201402じゃん ・・・と思ったら
-std=c++17で201703になるのか
つーか7.3.0でもそうなるやん >>389
本当?知らなかった
7.3.0で-std=c++1zや-std=gnu++1zを付けてコンパイルしても__cplusplusは201402のままだったのだが俺環?
8.1.0なら-std=c++1zでちゃんと201703になる >>390
俺環
g++ (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 7.3.0
686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z
MD5: d1e009df8d254a15a549c5af2e2200db
SHA1: 96e11c754b379c093e1cb3133f71db5b9f3e0532
OS 名: Microsoft Windows 7 Professional
OS バージョン: 6.1.7601 Service Pack 1 ビルド 7601
プロセッサ: 1 プロセッサインストール済みです。
[01]: x64 Family 6 Model 60 Stepping 3 GenuineIntel ~2601 Mhz MinGWだけど -Wl,--stack でどうしてもスタックサイズが変わらないので悩んでいた
dumpbinとeditbinを使うと変わるし確かめられるんだけど、ようやく方法がわかった
リンカの-Xlinker optionで --stack=<バイトサイズ> と指定すれば変わった
どうも-Wlにバグがあるみたいだな
それとも-Wl,--stack=<バイトサイズ>としないといけないのだろうか
まあリンカの方をいじるのが確実だな 今試してみた
-Wl,--stack=<バイトサイズ> でも駄目でした
結局-Xlinker --stack=<バイトサイズ>で行きます OBJ吐いて結合のときと
OBJ吐かずにコンパイル即EXEのときで違うとか Eclipse CDT使うと通常ではOBJ吐いてから結合だよ
OBJが一つしかなくても >>399
過大な期待を抱かなければ今も昔も便利なものだぞw Git For Windows の一部として生き残るでしょ。MinGW >>405
なんでないの?
Git For WindowsのGit Bash便利だよ。 gitの付属物としてのmsys2だとpackmanとか入ってないから面倒 普通、pacmanでMSYS2にGitいんすこするでしょ
Git For Windows の存在意義って何?w >>410
Windowsがパッケージを管理していることがメリットかな…。 windowsのあれはパッケージ管理なのか?アップデートはアプリ任せだが >>413
Git for WindowsもMSYS2もChocolatey経由でinstall&upgradeしている。
Windowsの「アプリと機能」ってパッケージ管理じゃないの? msys2のupgradeは
pacman -Ysu
じゃなくて? >>410
MSYS2で擬似Linux環境が欲しいとかMinGWで
開発をしたいわけではないけど、最新の
VisualStudioとかAndroidStudioがGitを要求
するんでWindowsでGitだけ使いたいとかっていう
要求はある
Git使いたいわけではなくて、ソースコードに
GitHUBなどから動的にソースを取ってくる
見たいなものも増えているので GPLにしたくないのでclang+libc++をベースとしたw32api開発環境を構築してみようと思ったけど全然情報ないのな >>417
このスレで言うのもあれだけど、わりとそのまま置き換えて使えるよ
msvc系で使うならターゲットも気にしなくていいし
でもそれならMSからvcのビルドツール落としてそっちのコマンドラインの方を
使った方がいいような気もする >>418
事態が結構複雑で・・・
言語はRust
使いたいライブラリはOpenCV(cmake)、GraphicsMagick(make/VisualMagick)、PDFium(Ninja)
ビルドツールだと最新のsln/vcxprojしかビルドできない(VisualMagickはVC++7のslnしか作れない)
コミュニティを入れればビルドできるだろうがめっちゃでかい
最近はWindowsでも脱msvcの流れっぽいしRustも例外ではない(リンカをlldにしようという話があるらしい)
最終的にはLinuxや*BSDでも使う可能性を考えるとmsvc依存は好ましくない
じゃあMinGWで・・・でもライブラリ類がGPLなのは困る。今更gccというのも
ならLLVM系は・・・clangはビルド済みを落とせるけどlibc++はどうすれば??? ←イマココ
以降愚痴。Chromeのコンパイラがmsvcからclangになんて記事が出回っているくらいだし
PDFiumもclangでビルドできるはずだがmsvc(コミュニティ)を使う記事しか見つからん
俺様ビルドシステムの上に情報不足とかマジやめて欲しい 別にMinGWでコンパイルしてもGPLになる訳じゃないしな デバッグにgccを使うだけじゃGPLにはならんな
リリースをvcでやるとか GPL系ライセンスの嫌いなところは業界内で通用する統一された解釈がなくトラブルに発展する可能性が高いこと
類似の事象でも人によって正反対の主張をしているとかザラだし おまえらGCCランタイムライブラリ例外を知らんの? >>428
プロプライエタリなプログラムと混ぜてはいけないと読めるが自分の解釈は間違っているかな? GCCランタイムライブラリ例外、GCCランタイムライブラリ例外言っていた人はどこかへ行っちゃったんか?
OS例外というのもあるよね「何を持ってOSか、どこまでがOSか」に対する統一された見解はなくて
人や会社によって差があった気がするけど >>429
GCCのプラグインとしてproprietaryなプログラムを組み合わせると例外の恩恵を受けられない
「GPLと両立しないプラグインなど」を組み込ま「ない」GCCが、proprietaryなソースコードをビルド(*.oの出力、リンク)しても例外は適用される(出力されるものはGPL扱いにならない)
ように読んだ
たぶん「コンパイラの中間表現」はGIMPLEとかRTLみたいなGCC固有の表現を指してて、アセンブリ言語(-Sオプションで出力されるやつ)やオブジェクトコードは指してなさそう スカトロMinGWの方が先に8.2.0出しやがった 待った
このビルドおかしいぞ
g++ -v で --with-arch が i686 じゃなく i586 になってて
#include <thread> は通るのに std::thread がエラーになったり
#include <mutex> は通るのに std::mutex がエラーになるぞ
「このビルド」は、ここ↓で拾ったやつ
https://ja.osdn.net/projects/mingw/releases/p15522 >>434
mingw-getのサプライチェーンを疑ってみれ。 最近 Cygwin も今使ってるやつ居るのか不安になる事が・・
もしかして日本で10人ぐらいの Cygwin ユーザーの一人が俺だったりするんじゃないのか?とか >>437
俺も日本人ユーザーの一人だが、最近はあまり使っていない。
頻繁にパッケージは更新されているから、世界的にユーザーはいるんだろうと思う。 WINDOWSをアンインストールしてUNIXクローンを入れるのが一番幸せになれるよ リーナス君もタネンバウム先生も
作ったのは完全オリジナルOSだろ MSYS2 のスレって無いみたいだけど、
このスレで話題にしてもいいかな? >>439
デスクトップ2台使っている。
旧機はUbuntu。新機はWindows 10 Pro。
Windows上でUNIXライクなコマンドを使いたいことが多々ある。 みなWSL(Windows Subsystem for Linux)に行ってしまったのさ・・・ >>448
Git BashかWSLかあきらめてPowerShellを極める minttyのためだけにcygwin入れてた時期があったけど
それもももうcygwin気にせず使えるようになったし
cygwinはお役御免 cygwin + msys -> msys2だと思ってた pcre2のpcre2_match_*() がクラッシュするんだけど、cygwinでしか起きないので調査する意欲がわいてこない。 >>449
win7 な私に wsl の恩恵はないのでしょうか? Git for Windows v2.21.0 Release Notes
Latest update: February 26th 2019
https://gitforwindows.org/ random_deviceがクソすぎ
D:\learn\random>type test1.cpp
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device d;
cout << d() << endl;
cout << d() << endl;
cout << d() << endl;
}
D:\learn\random>g++ test1.cpp
D:\learn\random>a
3499211612
581869302
3890346734
D:\learn\random>a
3499211612
581869302
3890346734