I am using bitbake to build and deploy my application to my linux build. I was recently made aware that my binary application was not being deployed to /usr/bin
. I was told to update my mainapplication.bb to have the following line. install -m 0644 ${S}/MAIN_Application ${D}${bindir}
Doing do causes my bitbake build to crash as it cannot find the MAIN_Application
binary file.
My full bitbake file is as follows
LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = " file://MAIN_Application file://services " inherit autotools systemd S = "${WORKDIR}/MAIN_Application" DEPENDS += "libsocketcan" SYSTEMD_SERVICE_${PN} = "MAINapplication.service" do_install_append () { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/services/MAINapplication.service ${D}${systemd_system_unitdir} sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/MAINapplication.service install -m 0644 ${S}/MAIN_Application ${D}${bindir} }
I am using autotools, I have a makefile.am, configure.ac and autogen script. Running them locally I get the appropriate binary file which I can place onto the device and run. I am wondering why bitbake cannot find the binary file in its automated process.
Edit: The binary file is created and stored at build-fb/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/mainapplication/0.0-r0/build
. Is my path incorrect?
Advertisement
Answer
autotools
compiles into build folder which is ${B}
Just confirm that that is your build directory:
bitbake -e mainapplication | grep ^B=
and change this line:
install -m 0644 ${S}/MAIN_Application ${D}${bindir}
by this line:
install -m 0644 ${B}/MAIN_Application ${D}${bindir}