2016-07-27 10 views
1

GnuradioのOOTブロックを書き込もうとしたときに、私はcmake ../を実行し、次にmakeを実行しました。 makeプロセスが正常にいくつかのオブジェクトを構築し、それがステップに到達したとき:Gnuradio OOTにソースが表示されていませんか?

Linking CXX executable test-XXXXXXXX 

問題があります:

libgnuradio-XXXXXXXX.so: undefined reference to 'YYYYYYYY' 

YYYYYYYYは私がに追加.ccファイルで定義された関数であり、ヘッダーを使用するブロックの場合は_impl.ccです。このソースは、_impl.ccファイルと同じソースディレクトリにあるにもかかわらず、明らかに見つかりません。

Cmakeは、生成されたMakefileを変更しないように明示的に警告していますが、とにかくかなり複雑なメイクファイルなので、私はそれをやってみることに躊躇します。リンクするときに追加のソースを組み込むように指示する別の方法はありますか?

+0

ソースコードを追加する必要があります。そうでない場合、これはちょうど推測ですが、私は、議論の弁証的な性質が受け入れやすいメーリングリストにあまり反対しませんが、よく質問されている質問には問題のコードが含まれているはずです。 –

答えて

0

あなたの最善の策はあなたのOOTフォルダの一番上にあるCMakeLists.txtを見ることです。リンク問題が発生している可能性が高く、パッケージの依存関係が満たされていない可能性があります。 cmake find_packageユーティリティを使用すると、システムで依存関係が利用可能かどうかを判断できます。主なOOTフォルダの下にあるcmake/Modulesディレクトリを見ると、いくつかの例があるはずです。 Cmakeには多くのモジュールが同梱されているので、必要なものが存在するでしょう。

メインのCMakeLists.txtファイルにfind_packageロジックを追加し、ビルドディレクトリを吹き飛ばしてもう一度作成して "cmake ../"を実行すると、依存関係の問題が明らかになります。別の言い方をすれば、何かlibgnuradio - *。が見つからないと思うものは、あなたのシステムにインストールされていないパッケージに属していなければなりません。 find_packageを使用してそれを確認し、それから答えをインストールすることです。

find_packageの例については、gr-digitalのような他のCMakeLists.txtファイルを見てください。

関連する問題