2017-03-13 6 views
1

http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#mingwの手順に従って、Adaptive Communication Environment(ACE)6.4.2をMinGWを使用して構築しています。私はWindows10 64ビットオペレーティングシステムを使用しています。私はC++プロジェクトを構築するために非常に新しいです。MinGWを使用した適応型通信環境(ACE)の構築

私はhttps://sourceforge.net/projects/mingw/files/からMinGWをインストールしました。私はそれが32ビットバージョンだと思います。 MinGWインストールマネージャを使用してすべてのパッケージをダウンロードしました。

Iはhttp://download.dre.vanderbilt.edu/からACE 6.4.2をダウンロードしてEに抽出:/dependencies/ACE-6.4.2

enter image description here

MinGWのルートレベルのフォルダ構造を以下に示します。システム変数pathに/dependencies/MinGW/msys/1.0/bin:/依存関係/ MinGWの/ binとE: enter image description here

私はEが含まれます。

  1. オープンMSYS shell

    は、私は、次の手順を行いました。 MinGWののbinディレクトリにPATH環境変数を設定します。

    export PATH=/e/dependencies/MinGW/bin:$PATH

  2. 追加ACE_ROOT環境変数ポインティングをACEラッパーのソースツリーのルートに:

    export ACE_ROOT=/e/dependencies/ACE-6.4.2/ACE_wrappers

  3. ファイルを作成したがでconfig.hと呼ばれます #include "ace/config-win32.h"

  4. を含む $ACE_ROOT/aceディレクトリ私が理解してきたことは内にその g++ある

    cd $ACE_ROOT/ace make

MSYSシェルで

include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU INSTALL_PREFIX=/e/dependencies/ACE-6.4.2-install

  • :ファイルを作成した

  • が含ま$ACE_ROOT/include/makeincludeディレクトリにplatform_macros.GNUと呼ばれますMinGWが使用されます。

    とエラー・ログ

    make[3]: Entering directory 'e:/dependencies/ACE-6.4.2/ACE_wrappers/ace' 
    
    GNUmakefile: /e/dependencies/ACE-6.4.2/ACE_wrappers/ace/GNUmakefile.ACE MAKEFLAGS=w 
    
    g++ -Wnon-virtual-dtor -O3 -g -mthreads -mtune=pentiumpro -fno-strict-aliasing -Wall -W -Wpointer-arith -pipe -DACE_HAS_CUSTOM_EXPORT_MACROS=0 -Wno-unknown-pragmas -Ie:/dependencies/ACE-6.4.2/ACE_wrappers -DACE_NO_INLINE -I.. -DACE_BUILD_DLL -c -o .shobj/Local_Name_Space.o Local_Name_Space.cpp 
    In file included from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/os_sched.h:25:0, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/OS_NS_Thread.h:30, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Thread_Mutex.h:29, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Log_Category.h:18, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc.h:22, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc_T.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:18, 
           from Local_Name_Space.cpp:1: 
    e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/os_time.h:56:16: error: redefinition of 'struct timespec' 
    typedef struct timespec 
           ^
    In file included from e:\dependencies\mingw\include\sys\time.h:3:0, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/sys/os_time.h:28, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/sys/os_resource.h:25, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/sys/os_wait.h:26, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/os_include/os_stdlib.h:27, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Basic_Types.h:54, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Log_Msg.h:26, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Log_Category.h:17, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc.h:22, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc_T.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:18, 
           from Local_Name_Space.cpp:1: 
    e:\dependencies\mingw\include\time.h:102:8: error: previous definition of 'struct timespec' 
    struct timespec 
         ^
    In file included from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space_T.cpp:15:0, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space_T.h:259, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:126, 
           from Local_Name_Space.cpp:1: 
    e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/OS_NS_unistd.h:322:45: warning: 'useconds_t' is deprecated [-Wdeprecated-declarations] 
             useconds_t interval = 0); 
                  ^
    In file included from e:\dependencies\mingw\include\wchar.h:66:0, 
           from e:\dependencies\mingw\lib\gcc\mingw32\5.3.0\include\c++\cwchar:44, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/ace_wchar.h:43, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/config-lite.h:33, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/ACE_export.h:10, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc_T.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:18, 
           from Local_Name_Space.cpp:1: 
    e:\dependencies\mingw\include\sys\types.h:221:23: note: declared here 
    typedef unsigned long useconds_t __MINGW_ATTRIB_DEPRECATED; 
            ^
    In file included from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space_T.cpp:15:0, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space_T.h:259, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:126, 
           from Local_Name_Space.cpp:1: 
    e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/OS_NS_unistd.h:322:45: warning: 'useconds_t' is deprecated [-Wdeprecated-declarations] 
             useconds_t interval = 0); 
                  ^
    e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/OS_NS_unistd.h:322:45: warning: 'useconds_t' is deprecated [-Wdeprecated-declarations] 
    e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/OS_NS_unistd.h:326:78: warning: 'useconds_t' is deprecated [-Wdeprecated-declarations] 
             const ACE_Time_Value &tv_interval = ACE_Time_Value::zero); 
                          ^
    In file included from e:\dependencies\mingw\include\wchar.h:66:0, 
           from e:\dependencies\mingw\lib\gcc\mingw32\5.3.0\include\c++\cwchar:44, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/ace_wchar.h:43, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/config-lite.h:33, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/ACE_export.h:10, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Malloc_T.h:16, 
           from e:/dependencies/ACE-6.4.2/ACE_wrappers/ace/Local_Name_Space.h:18, 
           from Local_Name_Space.cpp:1: 
    e:\dependencies\mingw\include\sys\types.h:221:23: note: declared here 
    typedef unsigned long useconds_t __MINGW_ATTRIB_DEPRECATED; 
            ^
    e:/dependencies/ACE-6.4.2/ACE_wrappers/include/makeinclude/rules.local.GNU:188: recipe for target '.shobj/Local_Name_Space.o' failed 
    make[3]: *** [.shobj/Local_Name_Space.o] Error 1 
    make[3]: Leaving directory 'e:/dependencies/ACE-6.4.2/ACE_wrappers/ace' 
    GNUmakefile:45: recipe for target 'ACE' failed 
    make: *** [ACE] Error 2 
    

    最終的に、私はACEを使用したアプリケーション開発のためのQTクリエーターを使用する必要があります。 MinGw 32ビット版のQTビルドしか見つかりませんでした。だから、私はMinGW 32ビットを選択してACEを構築します。

  • +0

    おそらく、これをもう少し自分で調べる必要があります。ソースからC++コードをコンパイルする経験がたくさんありますか? GCCのどのバージョンでMingWのどのバージョンを使用していますか?第二に、あなたは最初の重大なエラーを報告していると確信していますか? 2番目のエラーを説明していたかもしれない初期のエラーがあります。ビルドログの2番目または70番目のエラーをデバッグするのは無意味です。 makeの出力をログファイルにリダイレクトしてpastebinに貼り付け、レビューすることができます。 –

    +0

    MinGW-64(http://mingw-w64.org/doku.php参照)を使用して毎日ACEをエラーなしでコンパイルします。どのACEバージョン、どのMinGW、どのように設定したかなどの詳細を提供してください。 –

    +0

    おそらくあなたは非常に新しいmingwバージョンを持っています、 'g ++ --version'の出力は? ace/config.hファイルの先頭に '#define ACE_HAS_POSIX_TIME 1'を追加してみてください。 –

    答えて

    0

    timespec再定義で同じ問題が発生しました。私はgit-bashtdm-gcc-5.1.0-3を使用しています。私の場合は、timespecpthread.hace/os_include/os_time.hの両方に定義されているという問題があります。それを解決する1つの方法は、ace/config.hを編集することです:

    // Get 'timespec' explicitly from here. 
    #include <pthread.h> 
    
    // Tell ACE to do not declare 'timespec'. 
    #define ACE_HAS_POSIX_TIME 1 
    
    // Tell ACE to declare 'timespec_t' alias. 
    #define ACE_LACKS_TIMESPEC_T 1 
    
    // Default windows config, see ACE install manual. 
    #include "ace/config-win32.h" 
    

    私の場合には動作しませんでしたHAVE_STRUCT_TIMESPECを使用するためのアプローチ。一般に、it is not a good solution

    あなたは、あなたがtime.hで定義されたtimespecを得るでしょう、両方がmingw-getからインストールmingw + msysを使用している場合。解決策は同様です:

    // Tell ACE to do not declare 'timespec'. 
    #define ACE_HAS_POSIX_TIME 1 
    
    // Tell ACE to declare 'timespec_t' alias. 
    #define ACE_LACKS_TIMESPEC_T 1 
    
    // Default windows config, see ACE install manual. 
    #include "ace/config-win32.h" 
    

    解決できない場合は、ace/os_include/os_time.hをご覧ください。あなたの問題に適した特定のマクロがあるかもしれません。 tdmgit-bashを使用するときにサイドノートとして


    は、私がリンクエラーを取得しています。かなり奇妙に見えますが、なぜそれが起こっているのかまだ分かりません。例えば、

    ACE-6.3.2のために:

    C:/TDM-GCC-32/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: cannot find .: Permission denied 
    collect2.exe: error: ld returned 1 exit status 
    

    ACE-6.4.0用:

    g++.exe: error: .shobj/Filecac: No such file or directory 
    

    ACE-6.4.6用:

    g++.exe: error: .shobj/Co: No such file or directory 
    

    mingwながらmsysは成功したビルドを提供しています。

    関連する問題