[cfe-dev] cross compiling with 6.0.0 not finding gcc paths

Miller Henry via cfe-dev cfe-dev at lists.llvm.org
Wed Apr 18 07:52:48 PDT 2018

I'm building for an embedded system, this is working fine with gcc 5.2.0, but I've become interested in clang.  In 3.9.1 everything builds fine (once I fixed the real bugs - thank you to everyone who wrote useful warnings).  I'm interested in trying clang 6.0.0, and there things don't build.

The first error I get is is from cmake:
    [2/2] Linking C executable cmTC_03cd5
FAILED: cmTC_03cd5
    : && /opt/jdx/tools//usr/local/share/icecc/bin//clang --sysroot=/home/user/repo/jdx/wr8-baytrail_64/buildbox -fno-omit-frame-pointer -gsplit-dwarf -fdiagnostics-color=always --target=x86_64-wrs-linux  --sysroot=/home/repo/jdx/wr8-baytrail_64/buildbox -rdynamic -O2 -L/home/repo/jdx/wr8-baytrail_64/buildbox/usr/local/lib -Wl,--gdb-index -lrt -lpthread -Wl,--disable-new-dtags CMakeFiles/cmTC_03cd5.dir/testCCompiler.c.o  -o cmTC_03cd5   && :
/opt/jdx/tools/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/x86_64-wrs-linux/x86_64-wrs-linux-ld: error: cannot open crtbegin.o: No such file or directory
/opt/jdx/tools/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/x86_64-wrs-linux/x86_64-wrs-linux-ld: error: cannot open crtend.o: No such file or directory
    /opt/jdx/tools/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/x86_64-wrs-linux/x86_64-wrs-linux-ld: error: cannot find -lgcc
    /opt/jdx/tools/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/x86_64-wrs-linux/x86_64-wrs-linux-ld: error: cannot find -lgcc
    clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)

crtbegin.o is in /home/repo/jdx/wr8-baytrail_64/buildbox/usr/lib64/x86_64-wrs-linux/5.2.0/crtbegin.o When I copy the missing files to /home/repo/jdx/wr8-baytrail_64/buildbox/usr/lib64 cmake passes and but the build fails on unable to find <string> and <vector>, I started to add include paths for jdx/wr8-baytrail_64/buildbox/usr/include/c++/5.2.0/ and that gets farther.  However it is time to stop hacking the wrong way and fix the real problem. I suspect the problem is related to clang not understanding my --target option and thus not asking gcc for the paths to the missing files, but I don't really know how to make this work.

A search finds https://stackoverflow.com/questions/4160262/clang-linker-problem, but it isn't helpful because the code in that area has changed so much.

My host is x86-64 linux.  The target OS is x86_64 embedded linux (the sysroot is NOT compatible with the host libraries)

Can someone give me a hint about where I should look to make this work. I can change either the command line arguments or the clang source code but I'm not clear on where the right place to look is.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180418/ec887559/attachment.html>

More information about the cfe-dev mailing list