前回のデブパッケージで発生したトラブルの記録については、たくさんのピットを踏んだ

この記事は、「新人クリエーションセレモニー」イベントに参加し、一緒にゴールドクリエーションの道を歩み始めました。


1つ目は、必要なCmakeLists準備です。

主なものはシステム環境にinstallインストールすることです、あなたはcmakeの使用法を参照することができます(2)インストールの使用法このパッケージにインストールする必要がある3つのポイントがあります:1。実行可能ファイル2.ファイル/設定を起動しますファイル3.ダイナミックライブラリ


install(TARGETS ${PROJECT_NAME}_node ${PROJECT_NAME}
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(DIRECTORY launch
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)

install(DIRECTORY share/location_fusion/lib/
  DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)
复制代码

その中には、ダイナミックライブラリの一部にエラーが発生しやすい部分があります。上記の記述は、次の記述とは異なります。上記の記述は正しいです。libインストール時に含まれることはなく、lib内部が含まれます。それ以外の場合。/lib/libディレクトリにインストールされます!

install(DIRECTORY share/location_fusion/lib
  DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)
复制代码

途中でサーバーのコンパイルに問題がありました。挿入してください。

terminate called after throwing an instance of 'std::runtime_error'
复制代码

なぜ表示されるのかわかりません、解決策:

export LC_ALL=”en_US.utf8”
复制代码

インストール後、ライブラリと他のパッケージの名前が競合していることが判明しました。2つのパッケージが同時に1か所に書き込まれました。元々、インストールアドレスを変更したかったのですが、うまくいきませんでした。ライブラリ名を変更したところ、別のピットが登場!

.so名前を直接変更して実行したいのですが、結果はまだ前のパッケージを探しています。これは非常に奇妙です。このライブラリを再コンパイルし、生成時に名前を変更するだけで、結果を実行できます。

長い間無駄になりました。


発見したばかりの知識を少し記録します。通常の実行可能ファイルをデバッグする場合は、gdb ./直接。ではnode、どのようにgdbデバッグか?

検索は本当にそこにあり、学んだ!

<node launch-prefix="gdb -ex run --args" pkg="livox_mapping" type="scanRegistration_m1" name="scanRegistration_m1" output="screen">
复制代码

シンプルで便利な、それを記録します。


また、静的ライブラリと動的ライブラリに関する記事を見つけました。これは非常に包括的で詳細です。Linuxシステムプログラムの実行時にダイナミックライブラリパスをロードする順序

おすすめ

転載: juejin.im/post/7098318892170215437