Ich versuche RabbitMQ
+ C++
. Arbeiten unter Linux Ubuntu 16.04. Habe funktionierenden Code und wenn ich kompiliere mit CLion
alles funktioniert gut. Ich habe Frieden des Codes, was ich mit root ausführen muss, also möchte ich es mit g++
ausführen.Fehler beim Ausführen von .cpp-Datei im Terminal mit g ++
FEHLER VON TERMINAL
In function `main':
receiveUNPW.cpp:(.text+0x8e8): undefined reference to `SimplePocoHandler::SimplePocoHandler(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'
receiveUNPW.cpp:(.text+0xc9c): undefined reference to `SimplePocoHandler::loop()'
receiveUNPW.cpp:(.text+0xcce): undefined reference to `SimplePocoHandler::~SimplePocoHandler()'
receiveUNPW.cpp:(.text+0xea7): undefined reference to `SimplePocoHandler::~SimplePocoHandler()'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/libamqpcpp.so: undefined reference to `pthread_create'
Ich schreibe:
g++ -std=c++11 receiveUNPW.cpp -o receiveUNPW -lcrypt -lPocoNet -lPocoFoundation -lamqpcpp
CMakeList.txt
cmake_minimum_required(VERSION 3.5)
project(test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_library(poco_simple_handler SimplePocoHandler.cpp SimplePocoHandler.h)
target_link_libraries(poco_simple_handler PocoNet PocoFoundation crypt)
set(PROGS
sendUNPW
receiveUNPW
)
foreach(item ${PROGS})
add_executable(${item} "${item}.cpp")
target_link_libraries(${item} amqpcpp poco_simple_handler PocoNet PocoFoundation crypt)
endforeach(item)
MY IDEA
Wie kann ich sehen, wenn ich g++
verwenden, kann es keinen Bezug zu SimplePocoHandler
finden. In CmakeList.txt
habe ich
add_library(poco_simple_handler SimplePocoHandler.cpp SimplePocoHandler.h)
target_link_libraries(poco_simple_handler PocoNet PocoFoundation crypt)
so, wenn ich in CLION kompilieren alles funktioniert gut. So scheint es, dass ich dasselbe tun muss, wenn ich g++
benutze. Aber ich weiß nicht, wie es geht, irgendwelche Vorschläge oder Erklärungen wären großartig.
Ich weiß nicht receiveUNPW.cpp
Code teilen, aber es ist fast ähnlich dem receiver.cpp
, was Sie there sehen und auch habe ich keinen Fehler gibt, in CLion
alles funktioniert gut, ich brauche nur mein Programm laufen mit Terminal mit Root-Berechtigungen.
„Ich habe Frieden von Code, was ich mit root ausführen müssen, so muss ich es laufen g ++ verwenden“ - Warum würden Sie den Code als Root, um kompilieren ausführen müssen es als root? –
@JesperJuhl Wie meinst du laufen als root? Ich möchte nicht Berechtigungen für Projektordner und etc .. Ich möchte nur Code mit g ++ ausführen, testen Sie es und dann vielleicht Skript oder etwas, um es automatisch auszuführen. – Trimidas
Man kann Code mit g ++ nicht "ausführen". g ++ ist ein Compiler (wahrscheinlich derselbe Compiler, der von CLion verwendet wird).Compiler kompilieren Code und erzeugen ausführbare Dateien (Programme), die Sie dann ausführen (ausführen). Der Compiler führt das Programm nicht aus. –