【解決方法】どのライブラリとリンクしますか?

[ad_1]

これらは元の (C コード) 命令です。libbluetooth または bluetooth とリンクするか、 libbluetooth-dev を追加しますか? 私はそれをC++に移植しています。

 To compile our program, invoke gcc and link against libbluetooth

# gcc -o simplescan simplescan.c -lbluetooth 

私が試したこと:

lbluetoothを追加
llibbluetooth を追加

「-l」を追加する必要があるかどうかわかりません。これをコンパイラ オプションに直接行っているわけではありません。

解決策 1

-l コンパイラ フラグは、特定のライブラリ (共有 (.so) または 傷つく それ以外の場合は未定義のシンボルのライブラリ (.a)。 たとえば、あなたが電話したい場合 sqrt あなたは伝える必要があります C コンパイラを使用して、sqrt のオブジェクト コードを含むライブラリを追加します。 -lm (NB g++ は数学ライブラリを自動的に追加するため、その必要はありませんが、gcc は追加しません)。 そのため、bluetooth ライブラリで定義された関数をリンクするには、コンパイル コマンドに -lbluetooth を追加する必要があります。

また、libbluetooth-dev パッケージをシステムに追加する必要があります。 apt install libbluetooth-dev

上記のシェル スニペットは、root として作業していることを示唆しています (シェル プロンプト # )。 これは一般的に嫌われており、危険な場合があります。 ほとんどすべての経験豊富なシステム管理者は、一度に root として ‘rm -rf *’ のようなことを行い、悲惨な結果をもたらしました。 root は必要な場合にのみ使用し、sudo を使用してパッケージのインストールや更新などのシステム管理機能を実行する習慣を身に付ける必要があります。

解決策 2

部分的に解決

qtCreator では、オプションを使用して「システム パッケージ」にリンクします – libbluetooth-dev
特定のライブラリではありません。

残念ながら、QtCreator のコンパイル/リンク プロセスはパッケージを見つけることができず、
しかし、それは別の問題です。

[ad_2]

コメント

タイトルとURLをコピーしました