Search code examples
pythonlinuxcmakeyoctoyocto-recipe

Yocto recipe using cmake cannot find -lpython3.7m


I am using a Yocto recipe to install some binaries and create Python bindings. I received the source code from a vendor, and it is built using CMake. My goal is to create a recipe that will allow the executable files to be installed on an embedded system. My understanding is that an egg file is platform-independent but will package compiled C and C++ files that are platform-specific. So, I set up the toolchain, compile the files, and try to specify Yocto's Python to package the egg file. Here is my recipe:

LICENSE = "CLOSED"

SRC_URI = "file://\*"

DEPENDS += "openssl \
virtual/crypt \
python3-native \
python3-setuptools-native \
python3-cython-native \
zip \
"

S = "${WORKDIR}"

inherit cmake

EXTRA_OECMAKE += "-DPYTHON_EXECUTABLE=${RECIPE_SYSROOT_NATIVE}/usr/bin/python3-native/python3"

FILES\_${PN} += "${S}/build/examples/\*"

do_install() {
install -d ${D}${base_sbindir}
install -m 0755 ${S}/build/examples/\* ${D}${base_sbindir}
}

However, I am getting the following error: build/tmp/work/aarch64-poky-linux/my-recipe/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: cannot find -lpython3.7m | collect2: error: ld returned 1 exit status | error: command 'aarch64-poky-linux-g++' failed with exit status 1 | ninja: build stopped: subcommand failed. | WARNING: exit code 1 from a shell command.

However, when I search for "libpython3.7m.so", I can find the file at:

ls tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpyth on\* tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.7m.so tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.7m.so.1.0 tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.so

Could someone help me figure out what is causing this issue?

I check the build log, and I can find "build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib" with "-L" in the compile parameters.

aarch64-poky-linux-g++ -pthread -shared -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,--enable-new-dtags -Wl,-rpath-link,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,-O1 -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,--enable-new-dtags -Wl,-rpath-link,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,-rpath,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/lib -Wl,-O1 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-strong -Wl,-z,relro,-z,now -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0=/usr/src/debug/sls37/1.0-r0 -fdebug-prefix-map=/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0=/usr/src/debug/sls37/1.0-r0 -fdebug-prefix-map=/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot= -fdebug-prefix-map=/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native= -mcpu=cortex-a53+crc+crypto -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/python/temp/py-v2x.o -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/extras/aes-openssl -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/apdu -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/apdu-protocol -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/crc -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/ifx-error -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/logger -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/protocol -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/scp03 -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/extras/spi-rpi -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/t1prime -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/extras/timer-chrono -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/libs/v2x -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build -L/home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib -lv2x-stack -lv2x -lscp03 -laes-openssl -lcrypto -lt1prime -lspi-rpi -lapdu-protocol -lprotocol -lapdu -ltimer-chrono -llogger -lcrc -lifx-error -lpython3.7m -o /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/build/python/build/v2x.cpython-37m-x86_64-linux-gnu.so
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.so when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.a when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.so when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.a when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.so when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libcrypto.a when searching for -lcrypto
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.7m.so when searching for -lpython3.7m
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.7m.so when searching for -lpython3.7m
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: skipping incompatible /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/lib/libpython3.7m.so when searching for -lpython3.7m
| /home/gitlab-runner/builds/C7QGss99/0/automotive-sw/rsu_imx8mp_code_base/build/tmp/work/aarch64-poky-linux/sls37/1.0-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/9.2.0/ld: cannot find -lpython3.7m
| collect2: error: ld returned 1 exit status
| error: command 'aarch64-poky-linux-g++' failed with exit status 1
| ninja: build stopped: subcommand failed.
| WARNING: exit code 1 from a shell command.

Solution

  • Fix the issue by adding "DEPENDS += python3".