0

私はubuntu 16.04を使用しています。

ここで私がしたこと:

  1. インストールされた gperftools :

    sudo apt-get install google-perftools libgoogle-perftools-dev
    
  2. FindGperftools.cmake をダウンロード: https://github.com/vast-io/vast/blob/master/cmake/FindGperftools.cmake

  3. 名前を変更FindGperftools.cmakeして、パッケージ内GperftoolsConfig.cmakeのフォルダーに配置しましたcmake

  4. に追加CMakelists.txt:

    set (Gperftools_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake/")
    find_package(Gperftools REQUIRED)
    
  5. 同じ CMakelists.txt で、実行可能ファイルをリンクします。

    target_link_libraries(my_executable ${GPERFTOOLS_PROFILER})
    
  6. 端末で、CPUPROFILE 環境変数をエクスポートします。

    export CPUPROFILE=/my_path/prof.out
    
  7. 同じターミナルで、実行可能ファイルを実行します。

    ./my_executable
    

エラー メッセージはありませんが、ログ ファイル/my_path/prof.outは作成されません。

「my_executable」で「ldd」を実行すると、プロファイラーに対するリンクは表示さldd ./my_executable | grep profilれません (結果は何もありません)。それでも、ビルドフォルダー内のファイルを見ると、コンパイラーはリンケージを行っているようです ( -lprofileis there )。

私が忘れているかもしれないものはありますか?

注: 関連性があるかどうかはわかりませんが、私は catkin を使用しています。

4

1 に答える 1

1

これは、シンボルが直接使用されていないライブラリをリンクしないubuntuの(および非標準の)リンカー機能のようです。-Wl,-no-as-needed を LDFLAGS に追加してみてください (-lprofiler の前に渡されるようにしてください)。

于 2018-03-05T06:33:54.207 に答える