4

boostとrtmidiを使用してプロジェクトをコンパイルしようとしています。ただし、次のコンパイルエラーが発生し続けます。Linux、netbeans 7.2、boost 1.50.0、rtmidi2.1.0を使用しています。

g++ -D__LINUX_ALSA__ -lasound -lpthread 
-I/usr/local/boost_1_50_0 
-L/usr/local/boost_1_50_0/lib -L/usr/local/lib -L/usr/lib 
-lboost_system    
-o dist/Debug/GNU-Linux-x86/realtimebeatgenerationthesis build/Debug/GNU-Linux-x86/State.o build/Debug/GNU-Linux-x86/RawNote.o build/Debug/GNU-Linux-x86/MarkovEngineConsumer.o build/Debug/GNU-Linux-x86/Calibrator.o build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-x86/MidiHandlerProducer.o build/Debug/GNU-Linux-x86/LetterPattern.o build/Debug/GNU-Linux-x86/Letter.o build/Debug/GNU-Linux-x86/Meter.o build/Debug/GNU-Linux-x86/VOMC.o build/Debug/GNU-Linux-x86/Metronome.o  

私が受け取るエラーメッセージの2つの部分は次のとおりです。

undefined reference to `boost::this_thread::interruption_point()'

undefined reference to `RtMidiOut::RtMidiOut(RtMidi::Api, std::string)'
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/realtimebeatgenerationthesis] Error 1
make[2]: Leaving directory `dir/NetBeansProjects/RealTimeBeat'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `dir/NetBeansProjects/RealTimeBeat'
make: *** [.build-impl] Error 2

編集-1:ねえ@ mathematician1975、私が得たものを追加しても:

undefined reference to `boost::this_thread::interruption_point()'
build/Debug/GNU-Linux-x86/MarkovEngineConsumer.o: In function     `__static_initialization_and_destruction_0':
/usr/local/boost_1_50_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/local/boost_1_50_0/boost/system/error_code.hpp:215: undefined reference to  `boost::system::generic_category()'
/usr/local/boost_1_50_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'

最後に、リンカー->ライブラリboost_thread Boost_systemとrtmidiを追加して、最終的に機能させました。コマンドラインで次のようなものにつながる:

g++ -Wall -D__LINUX_ALSA__ -I/usr/local -L/usr/local/lib/ -L/alsa/ -lasound -lpthread -o          build/Debug/GNU-Linux-x86/Calibrator.o ..../main.o ...../MidiHandlerProducer.o ...../LetterPattern.o ..../Letter.o ..../Meter.o ..../VOMC.o ..../Metronome.o -L/usr/local/lib -lboost_thread -lboost_system -lrtmidi 
4

2 に答える 2

11

ブーストスレッドライブラリにリンクしていないようです。ビルドパスを追加-lboost_threadしてみてください。

于 2012-08-11T19:01:52.247 に答える
0

私は物事を正しくリンクしていると確信していましたが、同じ問題を抱えていました。エラー出力をさらに詳しく読むと、アーキテクチャの不一致が見つかる可能性があります。

ld: warning: ignoring file /.../boost/lib/libboost_system.dylib, file was built for x86_64 which is not the architecture being linked (i386)
ld: warning: ignoring file /.../boost/lib/libboost_filesystem.dylib, file was built for x86_64 which is not the architecture being linked (i386):
ld: warning: ignoring file /.../boost/lib/libboost_thread.dylib, file was built for x86_64 which is not the architecture being linked (i386):
于 2014-12-11T23:53:32.987 に答える