Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Library not found during link #1

Open
me21 opened this issue Sep 30, 2021 · 5 comments
Open

Library not found during link #1

me21 opened this issue Sep 30, 2021 · 5 comments

Comments

@me21
Copy link

me21 commented Sep 30, 2021

First of all, I actually use my own helloworld project with your toolchain file, but I'm not sure if it could make any difference.

I get the following error during CMake configure stage:

[proc] Executing command: "C:\Program Files\CMake\bin\cmake.exe" --no-warn-unused-cli "-DCMAKE_MAKE_PROGRAM:STRING=C:/Users/azarubkin/Documents/Platformio Projects/ninja.exe" -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_TOOLCHAIN_FILE:FILEPATH=BBBToolchain.cmake "-Hc:/Users/azarubkin/Documents/Platformio Projects/helloworld" "-Bc:/Users/azarubkin/Documents/Platformio Projects/helloworld/build" -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- Beagle Bone Black sysroot: C:/Users/azarubkin/Documents/beaglebone/rootfs
[cmake] -- No CROSS_COMPILE environmental variable set, using default ARM linux cross compiler name arm-linux-gnueabihf
[cmake] -- Using sysroot path: C:/Users/azarubkin/Documents/beaglebone/rootfs
[cmake] -- The CXX compiler identification is GNU 8.3.0
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - failed
[cmake] -- Check for working CXX compiler: C:/SysGCC/beaglebone/bin/arm-linux-gnueabihf-g++.exe
[cmake] -- Check for working CXX compiler: C:/SysGCC/beaglebone/bin/arm-linux-gnueabihf-g++.exe - broken
[cmake] CMake Error at C:/Program Files/CMake/share/cmake-3.21/Modules/CMakeTestCXXCompiler.cmake:62 (message):
[cmake]   The C++ compiler
[cmake] 
[cmake]     "C:/SysGCC/beaglebone/bin/arm-linux-gnueabihf-g++.exe"
[cmake] 
[cmake]   is not able to compile a simple test program.
[cmake] 
[cmake]   It fails with the following output:
[cmake] 
[cmake]     Change Dir: C:/Users/azarubkin/Documents/Platformio Projects/helloworld/build/CMakeFiles/CMakeTmp
[cmake]     
[cmake]     Run Build Command(s):C:/Users/AZARUB~1/DOCUME~1/PLATFO~1/ninja.exe cmTC_c1a52 && [1/2] Building CXX object CMakeFiles/cmTC_c1a52.dir/testCXXCompiler.cxx.o
[cmake]     [2/2] Linking CXX executable cmTC_c1a52
[cmake]     FAILED: cmTC_c1a52 
[cmake]     cmd.exe /C "cd . && C:\SysGCC\beaglebone\bin\arm-linux-gnueabihf-g++.exe --sysroot=C:/Users/azarubkin/Documents/beaglebone/rootfs -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard  CMakeFiles/cmTC_c1a52.dir/testCXXCompiler.cxx.o -o cmTC_c1a52   && cd ."
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: warning: libm.so.6, needed by c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so, not found (try using -rpath or -rpath-link)
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `acos@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `hypot@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `cos@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `fmod@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `tan@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `atan@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `asin@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `sqrt@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `ceil@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `atan2@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `sin@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `tanh@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `sinh@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `pow@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `log@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `floor@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `log10@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `exp@GLIBC_2.4'
[cmake]     c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld.exe: c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/libstdc++.so: undefined reference to `cosh@GLIBC_2.4'
[cmake]     collect2.exe: error: ld returned 1 exit status
[cmake]     ninja: build stopped: subcommand failed.

The libraries search dirs obtained by calling C:\SysGCC\beaglebone\bin\arm-linux-gnueabihf-g++.exe --sysroot=C:/Users/azarubkin/Documents/beaglebone/rootfs -print-search-dirs are:

libraries: =c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/;c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/;c:/sysgcc/beaglebone/bin/../lib/gcc/;c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/lib/arm-linux-gnueabihf/8/;c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/lib/arm-linux-gnueabihf/;c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/lib/;C:/Users/azarubkin/Documents/beaglebone/rootfs/lib/arm-linux-gnueabihf/8/;C:/Users/azarubkin/Documents/beaglebone/rootfs/lib/arm-linux-gnueabihf/;C:/Users/azarubkin/Documents/beaglebone/rootfs/lib/;C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf/8/;C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf/;C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/

The file libm.so.6 is located in C:\Users\azarubkin\Documents\beaglebone\rootfs\lib\arm-linux-gnueabihf, which is in the list, but why the linker cannot find it?

@me21
Copy link
Author

me21 commented Sep 30, 2021

I downloaded the Beaglebone toolchain for Windows from sysprogs.com, version 8.3.0.
The last invoked command invoked by g++ was:

c:/sysgcc/beaglebone/bin/../libexec/gcc/arm-linux-gnueabihf/8/collect2.exe -plugin c:/sysgcc/beaglebone/bin/../libexec/gcc/arm-linux-gnueabihf/8/liblto_plugin-0.dll -plugin-opt=c:/sysgcc/beaglebone/bin/../libexec/gcc/arm-linux-gnueabihf/8/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\AZARUB~1\AppData\Local\Temp\ccIvKx0u.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=C:/Users/azarubkin/Documents/beaglebone/rootfs --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu -m armelf_linux_eabi -pie C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf/Scrt1.o C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf/crti.o c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/crtbeginS.o -Lc:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8 -Lc:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf -Lc:/sysgcc/beaglebone/bin/../lib/gcc -Lc:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/lib -LC:/Users/azarubkin/Documents/beaglebone/rootfs/lib/arm-linux-gnueabihf -LC:/Users/azarubkin/Documents/beaglebone/rootfs/lib -LC:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf -LC:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib C:\Users\AZARUB~1\AppData\Local\Temp\ccsUvAbq.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc c:/sysgcc/beaglebone/bin/../lib/gcc/arm-linux-gnueabihf/8/crtendS.o C:/Users/azarubkin/Documents/beaglebone/rootfs/usr/lib/arm-linux-gnueabihf/crtn.o

Hope this helps!

@me21
Copy link
Author

me21 commented Sep 30, 2021

Also, this library is also present at C:\SysGCC\beaglebone\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf.

@me21
Copy link
Author

me21 commented Sep 30, 2021

If I don't set CMAKE_SYSROOT (comment it out in BBBToolchain.cmake), it works. But this is not right, I think...

@me21
Copy link
Author

me21 commented Sep 30, 2021

Found solution at https://forum.qt.io/topic/62094/cross-compiling-for-beaglebone-black-libm-so-6-not-found-but-it-is-there
Needed to copy libm.so.6 from lib/arm-linux-gnueabihf/ to usr/lib/arm-linux-gnueabihf/ and rename it to libm.so.
But why wasn't it found in its former location?
Anyway, some corrections need to be added to Windows instruction regarding symlinks. This one was apparently broken and not copied.

@me21
Copy link
Author

me21 commented Dec 9, 2021

I think -L option can be added to the rsync command, it will then copy all symlinks as files, plus the second step (copying missing libs) can be then omitted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant