<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello,<div><br></div><div>I'm trying to compile a Linux hello world executable on macOS.</div><div><br></div><div>The first step is simple:</div><div><br></div><div><font face="monospace">clang -c -target x86_64-linux-gnu -c -o hello.o hello.c<br></font></div><div><br></div><div>But linking results in an error:</div><div><br></div><div><div><font face="monospace">ld.lld --sysroot=/linuxroot/ -o hello -m elf_x86_64 \</font></div><div><font face="monospace">  -dynamic-linker /lib64/ld-linux-x86-64.so.2 \</font></div><div><font face="monospace">  /lib/crt1.o \</font></div><div><font face="monospace">  /usr/lib/x86_64-linux-gnu/crti.o ../hello.o \</font></div><div><font face="monospace">  /usr/lib/x86_64-linux-gnu/libc.so \</font></div><div><font face="monospace">  /usr/lib/x86_64-linux-gnu/crtn.o</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">ld.lld: error: cannot open /lib/crt1.o: No such file or directory<br></font></div><div><font face="monospace">ld.lld: error: cannot open /usr/lib/x86_64-linux-gnu/crti.o: No such file or directory<br></font></div><div><br></div></div><div><font face="monospace">/linuxroot/</font> contains all the necessary files copied from a Linux machine:</div><div><font face="monospace">/linuxroot/lib/crt1.o, /linuxroot/usr/lib/x86_64-linux-gnu/crti.o</font>, etc<br></div><div><br></div><div>It works if I use a full path for each file (<font face="monospace">-dynamic-linker /linuxroot/lib64/ld-linux-x86-64.so.2 ...</font>), but the resulting binary doesn't work on Linux, because it's dynamically linked to /linuxroot/... which is missing on the Linux box.</div><div><br></div><div><div><font face="monospace">file hi</font></div><div><font face="monospace">hi: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /linuxroot/lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, not stripped</font></div></div><div><br></div><div>The only way I can make it work is to have actual <font face="monospace">/usr/lib/x86_64-linux-gnu/crti.o</font> etc on my macOS box, which --sysroot is supposed to help avoid.</div><div><br></div><div>I'm sure I'm missing something simple here. I've been following the docs, but couldn't figure it out on my own.</div><div><br></div><div>Thanks!</div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>