2017-08-29 46 views
0

METISライブラリに依存するが、METISが必要なすべての場所を無効にしてCMakeを書いたソフトウェアをコンパイルする必要があります。さて、私は再びそのコードを有効にしなければならないので、コードは現在METISに依存しています。METIS:METIS_WPartGraphRecursiveへの未定義の参照

ソースからmetis-5.1.0をインストールしました。私はそれを見つけるためにCMakeモジュールを作成しました(実際にはthis oneを使用しました)。私は基本的に

find_package(METIS REQUIRED) 
if (METIS_FOUND) 
    include_directories(SYSTEM ${METIS_INCLUDE_PATH}) 
else (METIS_FOUND) 
    message (SEND_ERROR "This application cannot compile without METIS") 
endif (METIS_FOUND) 

と、最後に、

target_link_libraries(<my_executable> ${METIS_LIBRARIES}) 

cmakeの後に以下の行を追加し、原因でcmakeのプリント、すべてが正常であると思われる、それに応じてCMakeLists.txtを変更します。

-- Found METIS: /usr/local/include 
-- METIS libraries /usr/local/lib/libmetis.a 
... 
-- Configuring done 
-- Generating done 
-- Build files have been written to: <mylocation> 

しかし、私はmakeを実行した後、私は得る

undefined reference to `METIS_WPartGraphKway' 
undefined reference to `METIS_WPartGraphRecursive' 

どうすれば解決できますか?

EDIT:追加情報として 、私はmake VERBOSE=1てコンパイルする場合、それはcmakeのは、指定し、また、存在された場所に対応/usr/local/lib/libmetis.aを含んと、リンカは、右のライブラリを探しているようです。私はnm /usr/local/lib/libmetis.aとライブラリに見たときにまた、私は参照:

00000000000001c0 T METIS_WPartGraphKway 
00000000000009c0 T METIS_WPartGraphRecursive 

P.S:Ubuntuの17.04で、IはMETIS-5.1.0、METIS-4.0.3と試みており、また、sudo apt-get install libmetis-devで取り付けます。後者の場合、私はlibmetis.aの代わりにlibmetis.soを見つけますが、この場合もこれはcmakeによって正しく認識され、正しくリンカーが探していますが、最後に同じエラーが発生します。

また、私はを試しました。ソースmetis-5.1.0とmetis-3.0.6をUbuntu 14.04にインストールしましたが、同じ問題がありました。 多くの人がMETIS形式のthis pageで同じ質問をしているので、これは難しいと思われるエラーです。

私はまた、付加情報としてhere

を示唆するように、コンパイルコマンドの最後に-lmetisを追加しようとしました、私はMETISソースフォルダ内grep WPartGraphKwayをしました。バージョン5.1.0にはこのような文字列はありません。バージョン4.0.3では、

+1

表示されている実行可能ファイルに対して「未解決の参照」が報告されていますが、別の実行可能ファイル/ライブラリではありませんか? 'VERBOSE = 1'オプションを' make'するとコンパイルとリンクのために完全なコマンドラインが使用され、実際にmetisライブラリとのリンクが行われていることを確認できます。 – Tsyvarev

+0

ありがとう、私は 'VERBOSE = 1'の出力で質問を編集しました –

答えて

0

私はこれをやって解く:

  • 私はmetis-3.0
  • をインストールし、私は私のソフトウェア
  • ためcmakeを実行し、私はそれを貼り付け、私は最後のgccコマンドが
  • を印刷されているコピーmake VERBOSE=1
  • を実行します、私はコマンドの最後に-lmetisを追加し、コマンドを実行します

metis-5.1.0と同じ操作を繰り返しても機能しません。最初の投稿で書いたのと同じエラーが表示されます。

関連する問題