1

AVRクロスターゲットアプリケーションをAVRクロスターゲットライブラリにリンクしようとしています。ライブラリの名前はLib328Pで、アプリケーションの名前はLibTestです。ライブラリを構築し、ファイルシステムに.aが存在することを確認しました。

プロジェクトを右クリック>C/C++ビルド>設定>AVRC ++リンカー>ライブラリを-lカテゴリにLib328Pを追加し、-Lカテゴリに「$ {workspace_loc:/Lib328P}」を追加してライブラリをリンクしようとしています。

これがコンソールへの出力です。

**** Build of configuration Debug for project LibTest ****
 make all 
 Building target: LibTest.elf
 Invoking: AVR C++ Linker
 avr-g++ -Wl,-Map,LibTest.map,--cref -L"C:\Users\kempsa\indigo_workspace\Lib328P" -mmcu=atmega328p -o "LibTest.elf"  ./something.o   -lLib328P
 c:/arduino-0023/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: cannot find -lLib328P
 make: *** [LibTest.elf] Error 1

 **** Build Finished ****

私は他の投稿を見てきましたが、libと.aサフィックスを削除することを提案しています。私はすでにそれをやっています。どんな助けでもいただければ幸いです。

ありがとうございました!サム

4

1 に答える 1

1

あなたの場合、リンカはファイルを見つけることを期待しています:

C:\ Users \ kempsa \ indigo_workspace \ Lib328P \ libLib328P.a

その場所に存在しますか?それとも、サブフォルダー、おそらくリリースまたはデバッグにありますか?


これは私のために働くプロセスです:

プログラムにリンクするライブラリを追加するときは、2つのエントリを作成します。エントリは、プロジェクトのプロパティページで次の場所に移動して見つかります。

C /C++ビルド>設定

右側のペインで、作成している構成を上部のドロップダウンボックスで必ず選択してください。(時々、間違った構成に変更を加えて、なぜそれらの変更が行われないように見えるのか疑問に思います。)

「ツール設定」タブにはナビゲーションツリーがあります。そのツリーで、

AVRC++リンカー>ライブラリ

右側のペインには、ライブラリとライブラリパスの2つのリストボックスがあります。これらは、2つのエントリを追加する場所です。

1 ..上部のボックスで、プラスアイコンまたは+アイコンをクリックします。ここでは、ライブラリのベース名だけを入力します。これは、「lib」と「.a」を含まないライブラリ名です。

たとえば、「LibCore328v101」が1つあります。
これにより、リンカはファイル「libLibCore328v101.a」を検索します。

2 ..下部のボックスで、プラスアイコンまたは+アイコンをクリックします。ここで、そのライブラリファイルを見つけるためのパスを追加します。

2a。.aファイルを含むフォルダーへのパスを入力するだけです。

2b。[ワークスペース...]ボタンをクリックして、ライブラリが含まれているフォルダーに移動できます。ライブラリとプログラムを同じワークスペースに保持する場合、これはパスを指定するためのより良い方法です。私はこれを使用します。私の例では、このテキストが作成されます

"$ {workspace_loc:/ LibCore328v101 / Release}"

これは基本的に、ライブラリへの相対パスです。これは、ワークスペースの複製全体を作成でき、含まれているすべてのライブラリが引き続き正しいことを意味します。

コンソールウィンドウにリンカーの出力が表示されたら、両方のオプションが表示されます。私の例では、これらは次のとおりです。

-lLibCore328v101(小文字のell)-L "F:\ arduino-src \ tt-wb-trunk-hg \ LibCore328 \ Release"(大文字のell)

Eclipseプラグインが相対パスを現在の絶対パスに変換したことがわかります。リンカは、ライブラリ名に「lib」と「.a」を内部的に追加します。

このプロセスを繰り返して、必要な数のライブラリとパスを追加できます。

マルチターゲットプログラムの場合、ビルドターゲットごとに異なる構成を作成します。したがって、Debug and Releaseの代わりに、「DebugNano」「DebugTiny」などがあります。構成ごとに、ライブラリへのパスを変更します。

于 2013-01-05T08:08:00.880 に答える