I try RabbitMQ
+ C++
linuxのubuntuで作業16.04。作業コードを持っていて、私がCLion
を使ってコンパイルするとうまくいきます。 私はrootで実行する必要があるコードの平和を持っているので、g++
を使用して実行したい。 TERMINAL私が書くg ++を使用して端末で.cppファイルを実行するとエラーが発生する
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'
FROM
ERROR:
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
g++
を使用したときにわかるように、SimplePocoHandler
への参照が見つかりません。 CmakeList.txt
で私はCLionでコンパイルするときので、すべてが正常に動作します
add_library(poco_simple_handler SimplePocoHandler.cpp SimplePocoHandler.h)
target_link_libraries(poco_simple_handler PocoNet PocoFoundation crypt)
を持っています。だから私はg++
を使って同じことをする必要があるようです。しかし、私はそれを行う方法を知らない、任意の提案や説明は素晴らしいだろう。
私は自分のreceiveUNPW.cpp
コードを共有していないが、それはあなたがthereを見ることができますし、また、私はそこに任意のエラーを持っていない、CLion
ですべてが正常に動作するものというreceiver.cpp
とほぼ同様ですが、私はちょうど使用して私のプログラムを実行する必要がありますroot権限を持つ端末。
「私は私がルートで実行する必要がどのようなコードの平和を持っているので、私はグラムを使用して、それを実行する必要があり++」 - なぜ、あなたは実行するためにrootとしてコードをコンパイルする必要がありますそれは根としてですか? –
@JesperJuhlどうやってルートとして実行するのですか?私はプロジェクトフォルダなどの権限を設定したくないです。私はg ++を使ってコードを実行し、それをテストしてからスクリプトや何かを自動的に実行するようにしたいと思います。 – Trimidas
g ++でコードを "実行"しません。 g ++はコンパイラです(おそらくCLionで使用されるコンパイラと同じです)。コンパイラは、コードをコンパイルし、実行(実行)する実行可能ファイル(プログラム)を生成します。コンパイラはプログラムを実行しません。 –