15102925731
2012-Apr-12 01:25 UTC
[LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
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?? Thanks! -- 祝好! 甄凯 ------------------------------------------------------------------------------------------------------ 2012-04-12 ------------------------------------------------------------------------------------------------------ Name: 甄凯(ZhenKai) Homepage:http://www.renren.com/262729393 Email: zhenkaixd at 126.com or 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 or 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> 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.) 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 or 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 http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -- Thanks, Justin Holewinski _______________________________________________ LLVM Developers mailing list LLVMdev at cs.uiuc.eduhttp://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120412/b1ac1a66/attachment.html>
John Criswell
2012-Apr-12 01:31 UTC
[LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
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>
15102925731
2012-Apr-12 01:35 UTC
[LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
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? -- 祝好! 甄凯 ------------------------------------------------------------------------------------------------------ 2012-04-12 ------------------------------------------------------------------------------------------------------ Name: 甄凯(ZhenKai) Homepage:http://www.renren.com/262729393 Email: zhenkaixd at 126.com or 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 or 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 or 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> 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.) 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 or 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 http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -- Thanks, Justin Holewinski _______________________________________________ LLVM Developers mailing list LLVMdev at cs.uiuc.eduhttp://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120412/085b30fb/attachment.html>
Possibly Parallel Threads
- [LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
- [LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
- [LLVMdev] How to compile a linux module into .bc file using clang or llvm command?
- [LLVMdev] HELP: Clang options needed in command to compile device driver into linux module.
- [LLVMdev] HELP: Clang options needed in command to compile device driver into linux module.