私はラズベリーパイ2のプロジェクトに取り組んでいますモデルB.私はPiで直接コーディングとコンパイルを開始しましたが、今はWindows 7 PCで作業したいと思っています。私はすでにSysGCCクロスコンパイラをインストールし、単純なHello-Worldプログラムをコンパイルすることができました。 問題は、私のプロジェクトではcurlとjsoncppを使用しています。ネイティブラズベリーで私はそれをコンパイルする問題はありませんが、Windows上のクロスコンパイラは、私に次のエラーが表示されます:
c:/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld.exe: cannot find -lcurl
c:/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld.exe: cannot find -ljsoncpp
私はmakefileを使っていません。これは実際にはうまくいきませんでした。そして、このコマンドでうまくいきました。
g++ ../src/rpi/main.cpp ../src/rpi/connection.cpp ../src/rpi/jsonparser.cpp ../src/rpi/idchecker.cpp ../src/rpi/eventoperator.cpp -o ../bin/main -lcurl -ljsoncpp
Windowsシステムでは、次のようなコマンドで試してみました。
arm-linux-gnueabihf-g++.exe -std=c++11 ../src/rpi/main.cpp ../src/rpi/connection.cpp ../src/rpi/jsonparser.cpp ../src/rpi/idchecker.cpp ../src/rpi/eventoperator.cpp -o ../bin/main -L"C:/SysGCC/raspberry/arm-linux-gnueabihf/sysroot/usr/include/jsoncpp/json/" -L"C:/SysGCC/raspberry/arm-linux-gnueabihf/sysroot/usr/include/arm-linux-gnueabihf/curl/" -lcurl -ljsoncpp
だから、私はコンパイラ/リンカーに伝えなければならないことを読んだライブラリがどこにあるのですが、Raspiに-Lフラグを付けずに完全に動作する理由は本当に理解できません。私はライブラリをRaspiと同じフォルダに置くと思います。見つかりません。私は誰かが私にこの資料がどのように働くかについての簡単な基本的な説明を私に与えるのを助けてくれることを願っています。私は問題のチュートリアルや他の役に立つ質問を見つけることができません。
回答:
回答№1は0ラズベリーパイのライブラリは、システムディレクトリのようにリンクされている可能性が最も高い /usr/lib
または /usr/local/lib
。 Windowsでは、-Lフラグを付けて正しいパスを指定する必要があります。