[LLVMdev] How to compile a linux module into .bc file using clang or llvm command?

John Criswell criswell at illinois.edu
Wed Apr 11 18:31:43 PDT 2012


On 4/11/12 8:25 PM, 15102925731 wrote:
> Yeah, but I tried that command and error message was generated:
>
> hellomodule.c:1:10: fatal error: 'linux/init.h' file not found
> #include <linux/init.h>
> ^
> 1 error generated.
>
> how to solve this problem??

Well, you do have to include all the -I and -D options so that clang can 
find the Linux kernel header files. I don't know off hand what those 
specific options are, but the easiest thing to do is to build the 
kernel, grab the gcc command line that compiles your .c file to a .o 
file, and then replace gcc with clang and add the -emit-llvm option to 
the command line.

-- John T.

>
> Thanks!
>
> --
> 祝好!
> 甄凯
> ------------------------------------------------------------------------------------------------------
> 2012-04-12
> ------------------------------------------------------------------------------------------------------
> Name: 甄凯(ZhenKai)
> Homepage:http://www.renren.com/262729393
> Email: zhenkaixd at 126.com <mailto:zhenkaixd at 126.com>or 846227103 at qq.com 
> <mailto:846227103 at qq.com>
> TEL: 15810729006(Beijing)
> Address: Room I-406, Central Building, Tsinghua University, Beijing, 
> China. 100084.
>
> At 2012-04-11 23:48:07,"John Criswell" <criswell at illinois.edu> wrote:
>
>     On 4/10/12 10:11 PM, 15102925731 wrote:
>>     It's actually is .c file.
>>     I just want firstly to compile helloworldmodule.c into
>>     helloworldmodule.bc.
>>     Then I run a LLVM pass on it to do some optimization, and then I
>>     compile the modified .bc file into .ko file.
>>
>>     So, could you tell me how to compile helloworldmodule.c into
>>     helloworldmodule.bc? I think it's not the same command *"clang
>>     -O3 -emit-llvm hello.c -c -o hello.bc". *Because it is a device
>>     driver that will be at last compiled to be .ko file.
>
>     No, that's exactly how you would do it, although you might need to
>     use GCC + Dragonegg instead of clang because the Linux 3.0 kernel
>     doesn't compile with Clang out-of-the-box (at least for me, anyway).
>
>     -- John T.
>
>>
>>     Thank you!
>>
>>     --
>>     祝好!
>>     甄凯
>>     ------------------------------------------------------------------------------------------------------
>>     2012-04-11
>>     ------------------------------------------------------------------------------------------------------
>>     Name: 甄凯(ZhenKai)
>>     Homepage:http://www.renren.com/262729393
>>     Email: zhenkaixd at 126.com <mailto:zhenkaixd at 126.com>or
>>     846227103 at qq.com <mailto:846227103 at qq.com>
>>     TEL: 15810729006(Beijing)
>>     Address: Room I-406, Central Building, Tsinghua University,
>>     Beijing, China. 100084.
>>
>>     在 2012-04-11 09:56:21,"Justin Holewinski"
>>     <justin.holewinski at gmail.com> 写道:
>>
>>
>>         2012/4/10 15102925731 <zhenkaixd at 126.com
>>         <mailto:zhenkaixd at 126.com>>
>>
>>             Hi, my friends
>>
>>
>>             I know there is a difference between compiling a linux
>>             module and a simple helloworld programme.
>>             If I compile a helloworld.c file, the command is
>>             *"clang -O3 -emit-llvm hello.c -c -o hello.bc"*
>>             But what the command should be if I want to compile a
>>             linux module into a .bc file? (I know it may be an easy
>>             question to you guys, but I really don't know where to
>>             find the answer on llvm.org <http://llvm.org>.)
>>
>>
>>         What do you mean by linux module? A shared library (.so)? A
>>         kernel module (.ko)?
>>
>>
>>             Thank you!
>>
>>
>>
>>
>>             --
>>             祝好!
>>             甄凯
>>             ------------------------------------------------------------------------------------------------------
>>             2012-04-11
>>             ------------------------------------------------------------------------------------------------------
>>             Name: 甄凯(ZhenKai)
>>             Homepage:http://www.renren.com/262729393
>>             Email: zhenkaixd at 126.com <mailto:zhenkaixd at 126.com>or
>>             846227103 at qq.com <mailto:846227103 at qq.com>
>>             TEL: 15810729006(Beijing)
>>             Address: Room I-406, Central Building, Tsinghua
>>             University, Beijing, China. 100084.
>>
>>
>>
>>             _______________________________________________
>>             LLVM Developers mailing list
>>             LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>>             http://llvm.cs.uiuc.edu
>>             http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>>
>>
>>         -- 
>>
>>         Thanks,
>>
>>         Justin Holewinski
>>
>>
>>
>>
>>
>>     _______________________________________________
>>     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/20120411/e7a253af/attachment.html>


More information about the llvm-dev mailing list