Hello.
I have a problem with cross compile the libmodbus library.
Please help.
Example: repo
OS: Ubuntu Linux 18.04 (docker container)
arch: arm-linux-gnueabihf
cargo +1.54.0 b --release --target=arm-unknown-linux-gnueabih
I have file /usr/arm-linux-gnueabihf/include/sys/param.h
in my container:
root@b793a21b25db:/usr/local/src# find / -name param.h | grep sys/param.h
/usr/include/x86_64-linux-gnu/sys/param.h
/usr/arm-linux-gnueabi/include/sys/param.h
/usr/arm-linux-gnueabihf/include/sys/param.h
Error:
/usr/local/src/target/arm-unknown-linux-gnueabihf/release/build/libmodbus-sys-4ca48fe86eb6a401/out/include/modbus.h:12:10: fatal error: 'sys/param.h' file not found
/usr/local/src/target/arm-unknown-linux-gnueabihf/release/build/libmodbus-sys-4ca48fe86eb6a401/out/include/modbus.h:12:10: fatal error: 'sys/param.h' file not found, err: true
thread 'main' panicked at 'could not reate binding: ()', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libmodbus-sys-1.0.0/build.rs:126:10
Dockerfile:
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update --fix-missing -y
RUN apt install -y build-essential gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dev-armhf-cross
RUN apt install -y gcc-multilib-arm-linux-gnueabihf g++-multilib-arm-linux-gnueabihf
RUN apt install -y automake autoconf clang-3.9 libclang-dev libtool
RUN apt install -y sshpass sed curl unzip tar wget git-core git iputils-ping pkg-config sudo libgl1-mesa-dev
RUN apt install -y linux-headers-generic
ENV PKG_CONFIG_ALLOW_CROSS=1
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/arm-linux-gnueabihf/bin/
RUN rustup toolchain add 1.54.0-x86_64-unknown-linux-gnu
RUN rustup default 1.54.0-x86_64-unknown-linux-gnu
RUN rustup target add arm-unknown-linux-gnueabihf
RUN mkdir -p /source /.cargo /usr/local/src && \
echo "[target.arm-unknown-linux-gnueabihf]\nlinker = \"arm-linux-gnueabihf-gcc\"" > /.cargo/config
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc CC_armv7_unknown_Linux_gnueabihf=arm-linux-gnueabihf-gcc CXX_armv7_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/arm-linux-gnueabihf/pkgconfig
WORKDIR /usr/local/src
VOLUME /usr/local/src
VOLUME /transfer
COPY . .
CMD cargo +1.54.0 b --release --target=arm-unknown-linux-gnueabihf