• ベストアンサー

LinuxC++ファイルWindowsでのmake

GPLで、makefile,configure,configure.inなどのある linux用のC++ソースファイル(一部perlあり)を minGWでコンパイルしようとすると perlの方でエラーが出ます。 lang,LC_ALLなどがおかしいと出てきますが どうしたらいいのでしょうか。 Visual C++ Express Editionでは、 nmakeを使おうとすると区切り記号が ないというエラーがでます。 強引にGUI(IDE)上でコンパイルしよう とすると、includeファイルがないと いうエラーが出ます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

VC++, gccどちらでやるのが手間かからないか、確実性が高いかというと gccの方が向いている。 VC++ + gmakeという組み合わせでもできるのでVC++使う場合でもnmakeを使う必要はない。 ※ CC=CLでVC++のコンパイラを指定すれば十分。 ※ makeを勉強して知識増やしたいなら良い事だとは思いますが。(Makefileをnmake用に書き換えるのも) localeについては、警告でてるけど下記のメッセージがでてるので標準環境に変えてくれてるのでそれ自体には問題ない。 perl: warning: Falling back to the standard locale ("C"). オフィシャルページに書かれている下記から(その下の内容も含めてだけど) # Implementation # * C++ with a few C and FORTRAN 77 functions # * Object-oriented designed throughout Cygwinでgmake c/c++ fortran(g77) flex bison 等を選択して導入した環境で構築するのが良いかと思う。 ※ CygwinかSFU ( Cygwin環境で動作したという報告はもらってると書かれてます[下記ページ]) ※ flex bison gmake等は必要(Makefile作り変えるからgmakeの代わりにnmakeなどツールの変更を修正して行なう事は可能)。 http://www.mpqc.org/talks/compile/img2.html http://www.mpqc.org/talks/compile/index.html

alwen25
質問者

お礼

BLASはインストールできましたが、次のようなエラーが出ます。 messshm.cc: In member function ‘void sc::ShmMessageGrp::initialize(int)’: messshm.cc:173: error: ‘SHM_R’ was not declared in this scope messshm.cc:173: error: ‘SHM_W’ was not declared in this scope make[4]: *** [messshm.o] Error 1 make[4]: Leaving directory `/cygdrive/d/mpqc-2.3.1/src/lib/util/group' make[3]: *** [default] Error 1 make[3]: Leaving directory `/cygdrive/d/mpqc-2.3.1/src/lib/util' make[2]: *** [default] Error 1 make[2]: Leaving directory `/cygdrive/d/mpqc-2.3.1/src/lib' make[1]: *** [default] Error 1 make[1]: Leaving directory `/cygdrive/d/mpqc-2.3.1/src' make: *** [default] Error 1 あと、ATLASもGPLなのですか。 f77を持っていないので強引にgfortranを使いました。

alwen25
質問者

補足

./configure でかなり進みましたが blasがないという警告が出ます。 atlasやlapackのダウンロードは 可能なのですが、 ビルドして実行するとcygwin1.dllがない というエラーが出てcygwin1.dllを 入れても別のエラーが出ます。lapackはビルドすらできません。 (プロシージャが見つからないといったものです) また、ビルドが成功したら、libフォルダに 入れればいいのでしょうか。 unixに関する知識が少ないため基本的なことが 分からなくて申し訳ありません。 WARNING: Could not link to the BLAS library. It can be obtained at http://www.netlib.org/blas. Use --with-libdirs and/or --with-libs to specify the name of the library. configure: error: BLAS is required to complete the build

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

・make configure が必要かどうか、若干疑問。 大抵は ./configure で十分 ・「perl: warning: Setting locale failed.」で検索かければ、理由も対策もわかる。 MinGW上のPerlを実行しているのだから、Linux/bashでのやり方がそのまま使えるはず ・後半の警告は autoconfを使用しての configure.inからconfigureを作成する際に出ている警告。 autoconfのバージョンとconfigure.inの対応が合ってないか、configure.inの記述に問題があるのかは調べてないのでわからない。 警告を読むと、キャッシュに関するものなので、無視してもよさそう。 ・ ./configure で設定したり調査した結果に合わせてMakefileが作成される。 この時に、必要なオプションやファイルを指定してコンパイルを行うようにMakefileが作られる。 (コンパイラのコマンド名、依存するincludeファイルの場所を指定する-Iや、リンク時のライブラリを指定する-l 等) Makefileの文法を勉強してGNU Make→nmakeに単純に変換したところで、上のような設定がそのままでは意味がない。 nmake用、あるいはVisual Studioのプロジェクトを作成する configure相当のプログラムが無いと。

alwen25
質問者

お礼

ありがとうございます。

回答No.2

> mpqcというGPLの量子化学計算ソフトです。 > エラーメッセージは、minGWでは、 > 以下のものです、長いので、お礼の方と > 分けて書きます。 警告とエラーは違いますよ。 環境変数はWindowsでも設定できますので設定すれば良いかと。 ただし、minGWでコンパイルしても動かない可能性が大きいです。 http://www.mpqc.org/ 上記ページに下記の通り書かれています。 Platforms * Unix Workstations (Intel/Linux, RS/6000, SGI/IRIX) * Symmetric multi-processors (Intel/Linux, SGI/IRIX) * Massively parallel (IBM SP, Intel Paragon) Windows上で動かすなら、CygwinかSFU上(Windows上のUNIXサービスが使える環境)で行わないとUNIX系のシステムを使おうとして動かない可能性が非常に高いかと思います。 > Visual C++ Express Editionでは、 GNU makeの書式はかなり独特(独自の拡張多し)なので、他のmakeで動くようにするにはMakefileの修正は必須です。 また、MS VCは基本的にC89なのでgcc使って(C99)るソースだと書き換えが必要となる部分もありそうです。

alwen25
質問者

お礼

ありがとうございました。 Cygwinでやってみますが その前にMakefileの 書き方を勉強します。 GNU MAKEは書籍になってしまう ほど内容が多いので。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

せめて ・その「Linux 用の C++ ソースファイル」とは何なのか ・エラーメッセージは正確にどうなっているのか くらい書いてほしい.

alwen25
質問者

お礼

続きです。 configure.in:1751: the top level configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_static_works, ...): sspicious cache-id, must contain _cv_ to be cached lib/autoconf/libtool.m4:703: AC_LIBTOOL_LINKER_OPTION is expanded from... configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_pic_works_CXX, ...): uspicious cache-id, must contain _cv_ to be cached lib/autoconf/libtool.m4:2812: _LT_AC_LANG_CXX_CONFIG is expanded from... lib/autoconf/libtool.m4:2811: AC_LIBTOOL_LANG_CXX_CONFIG is expanded from... lib/autoconf/libtool.m4:1867: _LT_AC_TAGCONFIG is expanded from... configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_static_works_CXX, ...: suspicious cache-id, must contain _cv_ to be cached configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_pic_works_F77, ...): uspicious cache-id, must contain _cv_ to be cached lib/autoconf/libtool.m4:3979: _LT_AC_LANG_F77_CONFIG is expanded from... lib/autoconf/libtool.m4:3978: AC_LIBTOOL_LANG_F77_CONFIG is expanded from... configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_static_works_F77, ...: suspicious cache-id, must contain _cv_ to be cached configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_pic_works_GCJ, ...): uspicious cache-id, must contain _cv_ to be cached lib/autoconf/libtool.m4:4081: _LT_AC_LANG_GCJ_CONFIG is expanded from... lib/autoconf/libtool.m4:4080: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_static_works_GCJ, ...: suspicious cache-id, must contain _cv_ to be cached autoconf configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_pic_works, ...): suspcious cache-id, must contain _cv_ to be cached /usr/src/packages/autoconf/26/autoconf2.5-2.67-1/src/autoconf-2.67/lib/autoconfgeneral.m4:2019: AC_CACHE_VAL is expanded from... /usr/src/packages/autoconf/26/autoconf2.5-2.67-1/src/autoconf-2.67/lib/autoconfgeneral.m4:2040: AC_CACHE_CHECK is expanded from... lib/autoconf/libtool.m4:658: AC_LIBTOOL_COMPILER_OPTION i

alwen25
質問者

補足

mpqcというGPLの量子化学計算ソフトです。 エラーメッセージは、minGWでは、 以下のものです、長いので、お礼の方と 分けて書きます。 $ make configure aclocal -I lib/autoconf perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). configure.in:1751: warning: AC_CACHE_VAL(lt_prog_compiler_pic_works, ...): suspcious cache-id, must contain _cv_ to be cached /usr/src/packages/autoconf/26/autoconf2.5-2.67-1/src/autoconf-2.67/lib/autoconfgeneral.m4:2019: AC_CACHE_VAL is expanded from... /usr/src/packages/autoconf/26/autoconf2.5-2.67-1/src/autoconf-2.67/lib/autoconfgeneral.m4:2040: AC_CACHE_CHECK is expanded from... lib/autoconf/libtool.m4:658: AC_LIBTOOL_COMPILER_OPTION is expanded from... lib/autoconf/libtool.m4:4895: AC_LIBTOOL_PROG_COMPILER_PIC is expanded from... lib/autoconf/libtool.m4:2731: _LT_AC_LANG_C_CONFIG is expanded from... lib/autoconf/libtool.m4:2730: AC_LIBTOOL_LANG_C_CONFIG is expanded from... lib/autoconf/libtool.m4:80: AC_LIBTOOL_SETUP is expanded from... lib/autoconf/libtool.m4:60: _AC_PROG_LIBTOOL is expanded from... lib/autoconf/libtool.m4:25: AC_PROG_LIBTOOL is expanded from... 続きます。

関連するQ&A

  • CPANモジュール取得におけるmakeについて

    CPANモジュールのインストールについて質問があります。 環境は Windows XP, ActiveParl5.8.8 ,コンパイラはVC++6.0 です。 ※tar.exeとgzip.exeは C:\Perl\binにあります。 現在、Text::NSPというモジュールをインストールしようとしていますが cpan> install Text::NSP を実行すると makefile (1199):fatal error U1033:予期しない'@echo'Stop. nmake --NOT OK とエラーが出ました。 Microsoftサポートオンラインでエラーを調べたら、nmake仕様が原因らしいのですが、どこをどう変えたら解決できるのかが分かりません。 また、nmake ではなく dmake を使おうと思い、 C:\Perl\bin に dmake.exe を起きました。 また、C:\Perl\lib\CPAN のフォルダにあるConfig.pmのmakeを  'make'= q[] ⇒  'make' =q[C:\Perl\bin\dmake.EXE]と変更しました。 上記の変更で実行すると dmake.exe: Error-- 'C:\Perl\libConfig.pm' not found, and can't be made C:\Perl\bin\dmake.exe -- Not OK とエラーになります。 また perl -V:make でmakeを確認しても常に結果が make ='nmake'; としかなりません。 ここが make ='dmake'; と変えられればインストール出来るのかな?とも考えています。 この変更の仕方が調べているのですが、なかなか分かりません。 よろしくお願いします。 ※現在のnmakeの設定で他のモジュールは何の問題もなくインストール出来ています。

    • ベストアンサー
    • Perl
  • コンパイル時のエラーメッセージについて

    http://mattn.kaoriya.net/software/lang/ruby/を参考にMakefile.w32を作成(テキストにコピペした後ファイル名をMakefile.w32に変更)しnmakeコマンドで実行したら次のエラーが出てきました。 fatal error C1510: Cannot load language resource clui.dll. NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x4' Stop. このエラーは何を示しているのでしょうか?エラー検索をしたのですがひっかかるのは英語で書かれているページが多く、恥ずかしながら読めなくて困っています。

  • ファイルmake不可能

    ファイルをダウンロードしようとして ./configureまではうまくいったのですが makeをしたら make[1]: *** [pcrecpp.lo] error 1 make[1]: leaving directory /root/pcre-7.8/pcre-7.8 make: *** [all] erorr2 と表示されてうまくいきません なにがいけないのでしょうか? OSはcentos ダウンロードしようとしたファイルはlibpcreです

  • Windows環境へのmakeについて

    Windowsの開発環境でmakeを使用したいと思います。シェルでフォルダを選んでmakeコマンドを投入するとmakefileの指示に従ってそのフォルダのソースファイルなどを集めて実行ファイルを作成するところまでやってくれるというものです。 Linuxはmakeコマンドが当然ながら普通に利用できるのでその方向に沿ってシェルに依存したmakefileを作成すると思います。Windowsの場合は基本はmakeコマンドがないので、別途、取り寄せるのだと思います。 今の状態で、Windowsのパワーシェルでwhich make -a とすると、Rtools, bcc55, Gow(Gnu on Windows)のmake.exeが出てきます。適切なmakeが最初に呼ばれるように環境を編集してあとはmakefileを編集すればいいということなのでしょうか。Windowsにはnmake, cmakeなどいろんなものもありますが。コンパイラはgfortranとかgccなどのGNUのコンパイラで、これはシェルからコンパイルできるようになっています。Visual studio系はすぐには使いません。 Windowsのシェルでmakeを利用する手順を教えて頂きたいと思います。よろしくお願いします。

  • Windows7のコマンドラインでのnmake

    標題のようにWindows7のコマンドラインでnmakeを利用したいと思います。ソースプログラムを作成してコンパイルするということが基本だと思っています。 例えば、wave.fというフォートランのソースをgfortranでコンパイルしてwave.oというオブジェクトファイルを作成し、wave.exeを生成するというような動作をmakefileで実行する実験をしているのですが、エラーとなります。 ○ 以下に test.mak というmakefileを作成しました。いろんなサンプルファイルを参考にしてこのような動作かなと思って作成しました。右の←以下は私はこういうつもりで書いたというものです。 FC = gfortran          ←コンパイラ FFLAGS = -Wall ←オプション objects=wave.o         ←オブジェクト名 # wave: $(objects) $(FC) $(FFLAGS) $(objects) -o wave←コンパイル # wave: $(objects) ← オブジェクトファイルを集めて実行ファイルを作成する。 # clean :       ← はじめからやり直すためにオブジェクトファイルを削除する(クリーンにする)。 rm *.o    ← 削除 ○実行 nmake test.mak あるいは nmake -f test.mak などです。 結果は、NMAKE: fatal error U1073: 'wave.o'のビルドの方法が指定されていません。stop. gfortran -Wall wave.o -o wave というところが、オブジェクトファイルwave.oを使って実行ファイルwaveを作成するという意味なので、wave.fというファイルを探しだしてコンパイルしてwave-oを生成する、という筋書きになっていると思っていました。 昔からmakeが苦手なのでちょっと時間を取って考えているところです。 test.makのどこが間違っているのでしょうか。添削をお願いしたいのですが。 よろしくお願いします。Cのカテゴリの方も十分ご存知かと思ったのでこちらに書きました。

  • Windowsのmakeについて特にpython

    ソースプログラムを実行するための環境を作るmakeについてお尋ねします。Linuxなどでは、OSをインストールした時点で1つ有効なmakeがg++, gcc等で使用することを目指して利用できるようになっていると思います。アプリのインストールでさえmakeですね(./configure, make cleanとかの定型処理)。Windowsだとmakeを提供する元がいっぱいあってプロンプトでwhere make とすると4つぐらい出てきます。そこで質問なのですが、makeという操作は提供元によって全然文法その他の仕様が違うものなのでしょうか。つまり、一般性が高いmakefileというものあるのか?という質問にもなりますが。コマンドプロンプトでmakeをやるとpathの最初に出てくるmakeが呼ばれるようです。Windowsのmakeは一般論では何も言えないでしょうか。大昔,マイクロソフトはnmakeで名前を変えて唯一のものとして確定していたようですが。 さらにpython3.6についてお尋ねしたいと思います。あるプログラムのソースをダウンロードして、広げてみるとソースファイル軍とmakefileがあり、makefileの冒頭に、 ## The present Makefile is a pure configuration file, in which ## you can select compilation options. Compilation dependencies ## are managed automatically through the Python library SConstruct. 上記はmakeの一般論のあとPythonでもライブラリがあれば使えるという風に読める記述があります。そもそもPythonってインタプリターとかソースにpythonコマンドで利用するということであり、実行ファイルは作らないものだと思っていたのでどういうことだろうと思うのですが。makefileをmakeで呼び出して利用するにしてもどのmake.exeでもいいってことではないと思うのですが。pythonで使用するmakefileということですが。 よろしくお願いします。

  • C言語のコンパイルができません

    http://www.c-lang.org/primer.html 上記サイトのC入門用プログラム「hello.c」と言うソースのコンパイルを試みたのですが、エラーが出てしまいコンパイルできません。OSはwindows7でコンパイラはMinGWです。

  • メイクファイルからdllを生成するには

    環境はWindowsXP SP3 VisualStudio2008です。 メイクファイルからdllを生成するには dllとlib形式で用いるフリーのライブラリがありまして、 Windows用バイナリとソースが提供されています。 Windows用バイナリの方がリリースが遅いので、 最新のソースの方でdllとlibを生成しようと考えました。 しかし、中身を見ると、 C言語用の「.c」「.h」ファイル以外に以下のファイルが含まれており、 これは何なのかと疑問を持ちました。 aclocal.m4 config.guess config.sub configure configure.in depcomp INSTALL install-sh ltmain.sh Makefile.am Makefile.in missing 調べたところメイクファイルというものだと分かったのですが、 これを用いてどうやってdllを生成すればよいのでしょうか。 参考として、このライブラリの提供サイトを記載しておきます。 http://libharu.org/wiki/Downloads

  • libgdのmake でエラー

    perl で GD を使うために libgd をインストールしようとしているのですが、make で次のようなエラーがでて先に進めません。どうすればいいでしょうか? cd . && /bin/sh /var/morita/linux_apps/gd-2.0.35/config/missing --run aclocal-1.9 -I config aclocal:configure.ac:64: warning: macro `AM_ICONV' not found in library cd . && /bin/sh /var/morita/linux_apps/gd-2.0.35/config/missing --run automake-1.9 --foreign Makefile.am:18: Libtool library used but `LIBTOOL' is undefined Makefile.am:18: Makefile.am:18: The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL' Makefile.am:18: to `configure.ac' and run `aclocal' and `autoconf' again. make: *** [Makefile.in] Error 1 libgdのバージョンはgd-2.0.35です。 configureのスイッチは ./configure --bindir=/usr/local/bin/gd-2.0.35 です。 OSはlinux(CentOS 4.4)です

  • cygwin1.dll を必要としないCのexeファイルを作りたいです

    はじめまして、shigure2005と申します。 私は普段UNIX上でC言語のプログラムを書いているのですが、 わけあってWindows上で動くようにする必要が出てきました。 そのプログラムをそのままcygwinでコンパイルしたところ コンパイルでき、実行ファイルも問題なく実行できたのですが、 このままですとcygwin1.dllが必要になってしまいます。 ですので、これがなくてもすむような別のコンパイル方法を 教えていただければと思ったしだいです。 過去ログを探って、MinGWについては試してみたのですが、 コンパイルは問題なく通るのに、なぜか実行ファイルを 実行すると、うまく起動できません。Mingwは以下のファイルを ダウンロードしてインストールしました。 mingw-runtime-3.8.tar.gz mingw-utils-0.3.tar.gz MinGW-4.1.1.exe w32api-3.3.tar.gz binutils-2.15.91-20040904-1.tar.gz mingw32-make-3.80.0-3.exe PATHは「C:\mingw/bin;C:\cygwin/bin」の順に通していて、 コマンドプロンプトでコンパイルし、コンパイル後、 コンパイルに用いたdllがcygwin1.dllでないのを確認して います。また、helloworldなど簡単なプログラムなら、 Mingwでもうまくコンパイルできてます。cygwinとMingwで コンパイル性能に大きな差などがあるのでしょうか? また、cygwinだけでも、Mingw-runtimeをインストール すれば、cygwin1.dllを必要としない形式にコンパイル できるという話を聞いたのですが、ご存知の方が いらしたら教えてください。 どうぞよろしくお願いします。

専門家に質問してみよう