2020年07月04日

ライブラリ追加方法

今回はEclipseベースの開発環境(SW4STM32、STM32CubeIDEなど)でリンカライブラリ(*.lib)ファイルや静的ライブラリ(*.a)ファイル等のライブラリを追加する方法について紹介します。

すべてのコードが公開されている場合はリンカライブラリ(*.lib)ファイルや静的ライブラリ(*.a)ファイル等を読み込む必要はありませんが、コードが公開されていない場合にメーカ等からリンカライブラリ(*.lib)ファイルや静的ライブラリ(*.a)ファイル等のみ提供される場合があります。このような場合にライブラリを追加してリンカ生成時にユーザー側のコード内の関数と結合させてバイナリファイルを生成します。


@ライブラリ配置
 今回はプロジェクトフォルダの直下にライブラリファイルを置きます。

Aライブラリ追加設定
 プロジェクトファイルのプロパティを開き(Alt+Enter)、「C/C++Build」の「Settings」、「Tool Settings」「MCU GCC Linker」内のLibrariesから追加します。

img1.jpg


 まず、「Library search path」の設定を下記のように設定し、プロジェクトフォルダ直下を見に行く設定にします。

"${workspace_loc:/${ProjName}}"

 また、追加したライブラリを「Libraries」に追加します。ここでポイントはライブラリ名の前に「:」を追加する点です。

:***.LIB

img2.jpg

Bヘッダファイル追加
 ライブラリファイル内の関数を定義しているヘッダファイルを必要に応じて追加します。プロジェクトフォルダ内のIncフォルダに追加します。

Cその他
 ライブラリファイルが特定のArmコアに依存している場合、下記のようなビルドエラーが発生する場合があります。下記のエラーの場合はライブラリファイルがFPUなしのMPUをターゲットにしているため、FPU有のMPUでビルドしようとして発生するエラーです。このような場合はライブラリをFPU対応に書き換えることは難しいため、FPUなしとしてビルドします。

/bin/ld.exe: error: *.elf uses VFP register arguments *.o does not
/bin/ld.exe: failed to merge target specific data of file *.o

 プロジェクトファイルのプロパティを開き(Alt+Enter)、「C/C++Build」の「Settings」、「MPU Settings」内の「Floating-point ABI」を「hard」から「soft」に切り替えます。

img3.jpg


メーカからすべてのコードや情報が公開されている状態が理想的ですが、様々な制約で公開されていない場合はこのような方法で組み込むことができます。

posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする