[LITMUS^RT] Starting Liblitmus

Glenn Elliott gelliott at cs.unc.edu
Sun May 31 10:54:37 CEST 2015


> On Fri, May 29, 2015 at 6:23 PM, Björn Brandenburg <bbb at mpi-sws.org <mailto:bbb at mpi-sws.org>> wrote:
> 
> > On 29 May 2015, at 13:13, Dhanny R <dhanker2626 at gmail.com <mailto:dhanker2626 at gmail.com>> wrote:
> >
> > Hello Sir Björn
> >
> > i have many question about LITMUS,
> > i'm interested because for my tesis research...
> > and i'm newbie for this
> >
> > my question are :
> > 1. i have many task for testing in liblitmus, it's right if i edit from base_mt_task (multicore)
> > or base_task (single core) or i must create a new file from liblitmus directory?
> >
> > 2. how can i compile the code that i build? if any tools must be installed like gcc or something else, in which directory i must installed? in liblitmus or any?
> >
> > 3. if my step wrong, could you give me reference how step by step using this tools?
> >
> > glad to know for the fast response
> 
> 
> Dhany, I’m glad that you are interested in using LITMUS^RT for your thesis research, but the questions that you are now asking pertain to issues that are not LITMUS^RT specific and not appropriate for this mailing list. Some experience working with moderately complex C code bases and Linux is required to make use of LITMUS^RT.
> 
> To answer your questions:
> 
> 1) You may organize your code any way you like. The two dummy skeletons exist to make starting up easier, but their use is entirely optional.
> 
> 2) Like most C libraries, liblitmus comes with a makefile. Of course a working gcc toolchain is required.
> 
> 3) I suggest you first learn how to build regular C programs on Linux, and how to use make. Once you know how to do that LITMUS^RT is fairly straightforward to use.
> 
> Best regards,
> Björn
> 

> On Sun, May 31, 2015 at 3:02 PM, Dhanny R <dhanker2626 at gmail.com <mailto:dhanker2626 at gmail.com>> wrote:
> hello again, 
> when i want to compile my program with gcc, the error message fatal error: litmus.h: No such file or directory, after i found the directory and compile again, error message shown fatal error: asm/cycles.h  No such file or directory, 
> 
> my question, which directory i can find litmus.h, asm/cycles.h?
> 
> thanks
> 
> regards

> 
> On May 31, 2015, at 1:38 AM, Dhanny R <dhanker2626 at gmail.com> wrote:
> 
> hello, sorry for my last message, i have fixed that, but when i compile my sample experiment there is an error message :
> 
> root at vm1:~/liblitmus/bin# gcc -o test base_mt_task.c 
> /tmp/ccA4KPUl.o: In function `main':
> base_mt_task.c:(.text+0x19): undefined reference to `init_litmus'
> base_mt_task.c:(.text+0x6b): undefined reference to `pthread_create'
> base_mt_task.c:(.text+0x95): undefined reference to `pthread_join'
> /tmp/ccA4KPUl.o: In function `rt_thread':
> base_mt_task.c:(.text+0xc6): undefined reference to `init_rt_task_param'
> base_mt_task.c:(.text+0x112): undefined reference to `init_rt_thread'
> base_mt_task.c:(.text+0x169): undefined reference to `gettid'
> base_mt_task.c:(.text+0x177): undefined reference to `set_rt_task_param'
> base_mt_task.c:(.text+0x1ce): undefined reference to `task_mode'
> base_mt_task.c:(.text+0x220): undefined reference to `sleep_next_period'
> base_mt_task.c:(.text+0x238): undefined reference to `task_mode'
> collect2: ld returned 1 exit status
> 
> 
> anyone can help me? thanks so much


Like many C programs, several liblitmus programs link in additional libraries.  In your case, base_mt_task.c must also link in the liblitmus library.  Here, the compiler is complaining that it cannot find liblitmus functions (among others).  Assuming that you have run the liblitmus makefile, you should see a static library with the name “liblitmus.a” in the liblitmus directory.

You can try the command “gcc -o test base_mt_task.c -llitmus” to tell GCC to also link in liblitmus.a.  HOWEVER, I don’t expect that this will actually work.  Liblitmus programs usually also link in the standard math library (“-lm”), the POSIX real-time library (“-lrt”), and the POSIX threading library (“-pthread”).  So you would probably need to do “gcc -o test base_mt_task.c -litmus -pthread -lrt -lm”.  (For subtle reasons, you want to use “-pthread” and NOT “-lpthread”.)

As you may see in the file liblitmus/Makefile (see here: https://github.com/LITMUS-RT/liblitmus/blob/master/Makefile#L221 <https://github.com/LITMUS-RT/liblitmus/blob/master/Makefile#L221>), the liblitmus makefile is already set up to compile base_mt_task.c for you.  Just run “make” in the liblitmus directory (again, after you have compiled litmus-rt.)  If you want to write your own liblitmus-based programs, I recommend that you modify the liblitmus Makefile to also compile your custom source files.  The link above should give you an idea of how to do this.

If you’re not familiar with makefiles, I suggest that you follow an online tutorial.  Here’s google’s top tutorial: http://mrbook.org/blog/tutorials/make/ <http://mrbook.org/blog/tutorials/make/>

-Glenn




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20150531/61150f2f/attachment.html>


More information about the litmus-dev mailing list