<div class="__aliyun_email_body_block"><div style="">Hi,dev-list<br></div><div style=""><br data-mce-bogus="1"></div><div style="">   It seems work well if there is only one tracepoint file(sample_tracepoint.h) including in app .i.e<br data-mce-bogus="1"></div><div style=""><br data-mce-bogus="1"></div><div style="">sample_tracepoint.h<br data-mce-bogus="1"></div><div style=""><br data-mce-bogus="1"></div><div style="">#undef TRACEPOINT_PROVIDER<br>#define TRACEPOINT_PROVIDER sample<br><br>#if !defined(SAMPLE_TRACEPOINT_H) || defined(TRACEPOINT_HEADER_MULTI_READ)<br>#define SAMPLE_TRACEPOINT_H<br><br>#include <lttng/tracepoint.h><br><br>TRACEPOINT_EVENT(<br>        sample,<br>        bytes_in, // C++ Style comment<br>        TP_ARGS(char *, text),<br>        TP_FIELDS(<br>                ctf_string(message, text)<br>                  )<br>)<br>#endif /* SAMPLE_TRACEPOINT_H */<br>#undef TRACEPOINT_INCLUDE<br>#define TRACEPOINT_INCLUDE "./sample_tracepoint.h"<br><br>#include <lttng/tracepoint-event.h><br></div><div style=""><br data-mce-bogus="1"></div><div style="">sample.c<br data-mce-bogus="1"></div><div style="">#include <unistd.h><br>#define TRACEPOINT_DEFINE<br>#define TRACEPOINT_CREATE_PROBES<br>#include "sample_tracepoint.h"<br>int main(int argc, char **argv)<br>{<br>        int i = 0;<br>        for (i = 0; i < 100000; i++) {<br>                tracepoint(sample, bytes_in,  "bytes in");<br>                sleep(1);<br>        }<br>        return 0;<br>}<br></div><div style="">compile:<br data-mce-bogus="1"></div><div style=""> gcc -I. -o sample sample.c -ldl -llttng-ust</div><div style=""><br data-mce-bogus="1"></div><div style="">However,If one more tracepoint include file(sample_tracepoint2.h) added in app,compile failed.<br data-mce-bogus="1"></div><div style=""><br data-mce-bogus="1"></div><div style="">sample_tracepoint2.h<br data-mce-bogus="1"></div><div style="">#undef TRACEPOINT_PROVIDER<br>#define TRACEPOINT_PROVIDER sample2<br>#if !defined(SAMPLE_TRACEPOINT2_H) || defined(TRACEPOINT_HEADER_MULTI_READ)<br>#define SAMPLE_TRACEPOINT2_H<br><br>#include <lttng/tracepoint.h><br><br>TRACEPOINT_EVENT(<br>        sample2,<br>        bytes_in, // C++ Style comment<br>        TP_ARGS(char *, text),<br>        TP_FIELDS(<br>                ctf_string(message, text)<br>                  )<br>)<br>#endif /* SAMPLE_TRACEPOINT2_H */<br>#undef TRACEPOINT_INCLUDE<br>#define TRACEPOINT_INCLUDE "./sample_tracepoint2.h"<br>#include <lttng/tracepoint-event.h><br></div><div style=""><br data-mce-bogus="1"></div><div style="">sample.c<br data-mce-bogus="1"></div><div style="">#include <unistd.h><br>#define TRACEPOINT_DEFINE<br>#define TRACEPOINT_CREATE_PROBES<br>#include "sample_tracepoint.h"<br>#include "sample_tracepoint2.h"<br><br>int main(int argc, char **argv)<br>{<br>        int i = 0;<br>        for (i = 0; i < 100000; i++) {<br>                tracepoint(sample, bytes_in,  "bytes in");<br>                tracepoint(sample2, bytes_in,  "bytes in");<br>                sleep(1);<br>        }<br>        return 0;<br>}<br></div><div style=""><br data-mce-bogus="1"></div><div style="">compile:<br data-mce-bogus="1"></div><div style="">gcc -I. -o sample sample.c -ldl -llttng-ust</div><div style="">sample.c: In function˜main:<br>sample.c:12: error: __tracepoint_sample2___bytes_in undeclared (first use in this function)<br>sample.c:12: error: (Each undeclared identifier is reported only once<br>sample.c:12: error: for each function it appears in.)</div><div style=""><br data-mce-bogus="1"></div><div style="">   Does LTTng support compiling multiple tracepoint sources with app directly?</div><div style=""><br data-mce-bogus="1"></div><div style="">   Yes,I can compile multiple tracepoint providers to share libs and link them to app through TRACEPOINT_PROBE_DYNAMIC_LINKAGE  such as what doc/examples/demo does. <br data-mce-bogus="1"></div><div style=""><br data-mce-bogus="1"></div><div style="">Thanks<br data-mce-bogus="1"></div><div style="">zhenyu.ren<br data-mce-bogus="1"></div><div class="__aliyun_signature_wrap"><br><br></div></div>