Changes

190 bytes removed ,  13:53, 25 November 2016
Line 26: Line 26:  
</pre>
 
</pre>
   −
If the code consists of more than one source file, they all need to be compiled,
+
Don't forget to put <code>compel/include/uapi/</code> directory into include paths.
then linked together with the proper linker flags for compel:
     −
<pre>
+
Then link the parasite binary. Include all the .o files needed and compel plugins <code>std</code> and <code>fds</code> by using compel linker script.
$ ld foo1.o foo2.o -o foo.o $(compel ldflags)
  −
</pre>
  −
 
  −
Finally, pack the binary. Packing links the object file with [[compel plugins]].
      
<pre>
 
<pre>
$ compel pack foo.o -o foo.compel.o [-l ''plugin'' [...]]
+
$ ld foo1.o foo2.o compel/plugins/std.built-in.o compel/plugins/fds.built-ind.o -T compel/arch/$ARCH/scripts/compel-pack.lds.S -o parasite.po
 
</pre>
 
</pre>
   −
The <code>-l</code> option specifies plugins to be added to the packed binary. The <code>std</code> plugin is added by default, i.e. it does not require any flags.
+
The .po blob can now be loaded as parasite.
 
  −
Now, the <code>foo.compel.o</code> is ready for remote execution (note that <code>foo.o</code> was not).
      
== Running ==
 
== Running ==