交叉编译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/,但没有成功。我得到的第二个错误是

/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=$PATH:/home/semilog/Android/android-ndk-r23b/toolchains/llvm/prebuilt/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/prebuilt /linux-x86_64/sysroot --prefix=/home/semilog/work/kernel/out

首先从源代码中手动删除program_invocation_name。

全部安装

答案2

export PATH=$PATH:/opt/arm-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/

从configure.ac注释AC_FUNC_MALLOC

./autogen.sh --enable-tools=yes --host=armv8 CC=aarch64-linux-gnu-gcc --prefix=/home/semilog/work/kernel/out

make all install

相关内容