libgpiodライブラリをクロスコンパイルして私のプログラムで使用する

libgpiodライブラリをクロスコンパイルして私のプログラムで使用する

"gpiod"ライブラリを使用してプログラムをクロスコンパイルしようとしています。

私のホストコンピュータにはUbuntu 18.04があり、クロスコンパイルのターゲットプラットフォームはIMX8X SOMを搭載したマザーボードです。

ソースコードはで見つかりました。https://variwiki.com/index.php?title=MX8_GPIO&release=RELEASE_DUNFELL_V1.3_VAR-SOM-MX8X「2.2 libgpiod Cアプリケーション」の段落に従ってコンパイルしたいと思います。私のマザーボードで使用されているオペレーティングシステムは、Yoctoでコンパイルされた「dunfell」ディストリビューションです。私が使用しているクロスコンパイラもYocto環境(aarch64-fslc-linux-gcc)でSDKとして生成されます。

コンパイル時に最初に取得するのは

"fatal error: gpiod.h: No such file or directory"

したがって、このライブラリはデフォルトで提供されているツールチェーンには含まれていません。そこで、以下の指示に従ってコンピュータに(クロス)ライブラリをインストールしてみました。https://www.beyondlogic.org/an-introduction-to-chardev-gpio-and-libgpiod-on-the-raspberry-pi/しかし、成功しませんでした。私が得る2番目のエラーは

/opt/fslc-wayland/3.1/sysroots/x86_64-fslcsdk-linux/usr/libexec/aarch64-fslc-linux/gcc/aarch64-fslc-linux/9.3.0/real-ld: cannot find -lgpiod
collect2: error: ld returned 1 exit status

私のコンパイルフラグは次のとおりです。

CFLAGS = -Wall -I$(INCLUDE) --sysroot=${SDKTARGETSYSROOT} -Og -lgpiod

私はこの種の問題に初めて遭遇し、少し間違いを犯していることを願っています。誰でも助けてくれたら、よろしくお願いします!

ベストアンサー1

Androidシステムでは、android ndkを使用してください。

エクスポートパス=$PATH:/home/semilog/Android/android-ndk-r23b/toolchains/llvm/prebuild/linux-x86_64/bin

./autogen.sh --enable-tools=yes --host=armv8 CC=aarch64-linux-android24-clang --with-sysroot=/home/semilog/Android/android-ndk-r23b/toolchains/llvm/prebuild /linux-x86_64/sysroot --prefix=/home/semilog/work/kernel/out

ソースコードから program_invocation_name を手動で削除して起動します。

すべてインストール

おすすめ記事