2012-04-02 15 views
0

Ich erhalte einen nicht definierten Referenzfehler, wenn ich versuche, ein C++ - Programm zu kompilieren. Ich bin mit der die -I und -L schaltet auf lib zu zeigen und Dateien meinen Befehl umfassen:undefinierter Referenzfehler beim Kompilieren der C++ - Anwendung

g++ -g -Wall -L/usr/local/lib/active -I/usr/local/include/active tutorial_01.cpp -o tutorial_01 

Können einige mir helfen, mit dem, was ich fehle?

In file included from /usr/local/include/active/jaus/core/header.h:44:0, 
       from /usr/local/include/active/jaus/core/message.h:49, 
       from /usr/local/include/active/jaus/core/service.h:44, 
       from /usr/local/include/active/jaus/core/transport/transport.h:44, 
       from /usr/local/include/active/jaus/core/component.h:43, 
       from tutorial_01.cpp:42: 
/usr/local/include/active/jaus/core/address.h: In static member function ‘static bool JAUS::Address::IsReservedComponentID(JAUS::Byte)’: 
/usr/local/include/active/jaus/core/address.h:302:40: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] 
/usr/local/include/active/jaus/core/address.h:303:40: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] 
/tmp/cczAJw8H.o: In function `main': 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:58: undefined reference to `JAUS::Component::Component()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:78: undefined reference to `JAUS::Discovery::Name' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:78: undefined reference to `JAUS::Component::GetService(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:88: undefined reference to `JAUS::Discovery::SetSubsystemIdentification(JAUS::Subsystem::Type, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:100: undefined reference to `JAUS::Component::Initialize(JAUS::Address const&, double)' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:109: undefined reference to `CxUtils::Time::GetUtcTimeMs()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:122: undefined reference to `JAUS::Management::Name' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:122: undefined reference to `JAUS::Component::GetService(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:130: undefined reference to `CxUtils::Time::GetUtcTimeMs()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:136: undefined reference to `CxUtils::Time::GetUtcTimeMs()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:139: undefined reference to `CxUtils::GetChar()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:144: undefined reference to `CxUtils::SleepMs(unsigned int)' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:150: undefined reference to `JAUS::Component::Shutdown()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:58: undefined reference to `JAUS::Component::~Component()' 
/home/reese/JAUS++-2.110519-src/libraries/jaus++/2.0/src/jaus/core/tutorial_01.cpp:58: undefined reference to `JAUS::Component::~Component()' 
collect2: ld returned 1 exit status 
+1

Bitte senden Sie die Fehlermeldung. –

+0

Nicht sicher, wie Fehlermeldung hinzugefügt wird. Kann ich meine ursprüngliche Frage ändern? –

+0

Sicher! Klicken Sie einfach auf den Link "Bearbeiten" am unteren Rand. –

Antwort

1

Die -L Option wirklich nichts für Sie tun, wenn Sie auch -l mit dem Namen der Bibliothek verwenden. Ich werde eine Vermutung nehmen, die Ihre Bibliothek libactive.a benannt ist, in welchem ​​Fall Sie werden dies tun:

g++ -g -Wall -L/usr/local/lib/active -lactive -I/usr/local/include/active tutorial_01.cpp -o tutorial_01 

Wenn die Bibliothek einen anderen Namen hat, werden Sie es ändern müssen.

Hier ist die Regel: Verwenden Sie für eine Bibliothek mit der Bezeichnung /path/to/library/libmylibrary.a diese Befehlszeile: -L/path/to/library -lmylibrary.

+0

Es gibt mehr als eine gemeinsam genutzte Bibliothek in usr/local/lib/active -Verzeichnis, deshalb verwende ich -L –

+0

Sie müssen '-L' für jedes Verzeichnis und' -l' für jede Bibliothek verwenden. '-L' gibt ein Verzeichnis an, in dem der Compiler suchen soll, aber es wird nicht wirklich gesucht, es sei denn, Sie nennen ihm den Namen einer Bibliothek mit' -l'. – parkovski

+0

Danke! Ich werde es versuchen –

Verwandte Themen