2017-03-13 2 views
1

Ich erstelle Adaptive Communication Environment (ACE) 6.4.2 unter Verwendung von MinGW folgenden Schritten in http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#mingw. Ich benutze Windows10 64-Bit-Betriebssystem. Ich bin sehr neu beim Erstellen von C++ - Projekten.Aufbau der adaptiven Kommunikationsumgebung (ACE) mit MinGW

Ich installierte MinGW von https://sourceforge.net/projects/mingw/files/. Ich glaube, es ist eine 32-Bit-Version. Ich habe MinGW Installation Manager verwendet, um alle Pakete herunterzuladen.

ich heruntergeladen ACE 6.4.2 von http://download.dre.vanderbilt.edu/ und extrahiert E: /dependencies/ACE-6.4.2

enter image description here

Die Root-Ebene Ordnerstruktur von MinGW unten gezeigt. enter image description here

I umfassen E:/Abhängigkeiten/MinGW/sind und E: /dependencies/MinGW/msys/1.0/bin auf Systemvariable path.

Ich habe die folgenden Schritte:

  1. eröffnen MSYS shell. Set PATH Umgebungsvariable auf MinGW bin-Verzeichnis:

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

  2. Added ACE_ROOT Umgebungsvariable zeigt auf die Wurzel der ACE-Wrapper Quellbaum:

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

  3. eine Datei erstellt namens config.h in der $ACE_ROOT/ace Verzeichnis, das enthält: #include "ace/config-win32.h"

  4. eine Datei erstellt namens platform_macros.GNU im $ACE_ROOT/include/makeinclude Verzeichnis enthält:

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

  5. Im MSYS Schale,

    cd $ACE_ROOT/ace make

Was habe ich, dass g++ innerhalb verstanden worden ist MinGW wird verwendet.

Und das Fehlerprotokoll

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 

Letztlich Ich habe QT Creator ACE für die Anwendungsentwicklung zu verwenden. Und ich konnte nur MinGw 32 Bit Versionen von QT Build finden. Deshalb wähle ich MinGW 32 Bit zum Aufbau von ACE.

+0

Sie müssen wahrscheinlich selbst ein wenig mehr in die Sache schauen. Haben Sie viel Erfahrung beim Kompilieren von C++ Code aus Quellen? Welche Version von MingW benutzt du mit welcher Version von GCC? Zweitens, sind Sie sicher, dass Sie den ersten signifikanten Fehler melden? Möglicherweise gibt es frühere Fehler, die Sie einfach übersehen haben, die den zweiten Fehler erklären würden. Das Debuggen des zweiten oder siebzig Sekunden Fehlers in einem Erstellungsprotokoll ist sinnlos. Sie könnten die Ausgabe von make in eine Protokolldatei umleiten und sie in pastebin einfügen und dann überprüfen. –

+0

Wir kompilieren täglich ACE mit MinGW-64 (siehe http://mingw-w64.org/doku.php) ohne Fehler. Bitte geben Sie an, welche ACE-Version, welches MinGW, wie Sie es konfiguriert haben, usw. –

+0

Wahrscheinlich haben Sie eine sehr neue Mingw-Version, was ist die Ausgabe von 'g ++ --version'? Versuchen Sie, #define ACE_HAS_POSIX_TIME 1 am Anfang der Datei ace/config.h hinzuzufügen. –

Antwort

0

Ich stieß auf das gleiche Problem mit timespec Redefinition. Ich verwende tdm-gcc-5.1.0-3 mit git-bash. In meinem Fall ist das Problem, dass timespec in beiden pthread.h und ace/os_include/os_time.h definiert ist.Ein Weg, um es zu lösen ist ace/config.h zu bearbeiten:

// 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" 

Ein Ansatz HAVE_STRUCT_TIMESPEC zu verwenden, nicht in meinem Fall nicht funktioniert. Im Allgemeinen it is not a good solution.

Wenn Sie mit mingw + msys beide von mingw-get installiert, dann werden Sie timespec in time.h definiert erhalten. Lösung ist ähnlich:

// 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" 

Wenn es nicht hilft, einen Blick auf ace/os_include/os_time.h nehmen. Möglicherweise finden Sie bestimmte Makro für Ihr Problem geeignet.


Als Randbemerkung, ich bin immer Verbindungsfehler, wenn tdm und git-bash verwenden. Es sieht ziemlich komisch aus, ich weiß noch nicht, warum es passiert. Zum Beispiel

für 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 

für ACE-6.4.0:

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

für ACE-6.4.6:

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

Während mingw und msys bieten erfolgreiche Build.

Verwandte Themen