[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:41:24 PDT 2012


On 4/11/12 8:35 PM, 15102925731 wrote:
> Ok, that makes sense!
>
> That is to say, I don't need a makefile (in which to specify the path 
> to kernel) to compile it. Just a clang command with some option will 
> do it, right?

Yes, you just need a clang command line. However, using the kernel's 
Makefiles to figure out which -I and -D options to use will make things 
easier.

-- John T.

>
> --
> 祝好!
> 甄凯
> ------------------------------------------------------------------------------------------------------
> 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-12 09:31:43,"John Criswell" <criswell at illinois.edu> wrote:
>
>     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/5fcc25eb/attachment.html>


More information about the llvm-dev mailing list