[LLVMdev] LLVM IR on different platforms

Andreas Weber andreas.c.weber at gmail.com
Tue Jul 7 00:44:07 PDT 2015


Hi Sandeep,

As far as I know, it depends: If you have portable C/C++ source (e.g. with
ifdefs to handle platform specific stuff) you can compile this source with
the Linux-defines on Linux to generate a working Linux binary or you can
compile the same source on Windows with the Windows-defines to generate a
working Windows binary.

As LLVM/clang is inherently a cross-compiler you can also generate the
windows object files on Linux when you pass the correct target triple and
the Windows-defines to your Linux-clang or vice-versa. Note that this will
only give you object files which you still need to link to obtain a working
executable (usually with your system linker, link.exe on Windows, ld on
Linux).

What will not work is compiling the source with a Linux target triple and
Linux-defines into bitcode and then compile this bitcode into a Windows
object file and expect it to link and run correctly. The reason is that the
bitcode already encodes target specific information as it represents
preprocessed code and was generated to target a specific platform ABI
defining stuff like name mangeling, struct and vtable layout, exception
handling, calling convention, etc.

You might get away compiling a Linux-bitcode file into a working Windows
object file when you restrict yourself to platform independent C (the
preprocessed source is identical on Windows on Linux) and have only scalar
values as function parameters but I would not recommend this approach.

Best regards
Andreas

2015-07-07 8:13 GMT+02:00 Sandeep Kumar Singh <deepdondo007 at gmail.com>:

> Hi,
>
> I am curious to know about LLVM IR as platform independent feature.
> I have compiler some C and C++ applications that compiled on Linux 64bit
> machine, now I want to generate bit code file on Windows 64bit machine.
>
> 1) Will this execute without any issues?
> 2) Do I pass any option for making it operating system portable?
> 3) Can I generate bit code file also on Linux machine and then run on
> Windows machine?
>
> Please give me some pointers?
>
> Any help will be highly appreciated.
>
>
> Thanks and Regards,
> Sandeep
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150707/8988b76c/attachment.html>


More information about the llvm-dev mailing list