"TRACEPOINT_DEFINE" and include the tracepoint provider.
- Use "-I." for the compilation unit containing the tracepoint
provider include (e.g. tp.c).
- - Link application with "-ldl".
+ - Link application with "-ldl" on Linux, with "-lc" on BSD.
- If building the provider directly into the application,
link the application with "-llttng-ust".
- If building a static library for the provider, link the static
- Include the tracepoint provider header into all C files using
the provider.
- Example:
- tests/hello/ hello.c tp.c ust_tests_hello.h Makefile.example
+ tests/hello/ hello.c tp.c ust_tests_hello.h Makefile.example.*
2) Compile the Tracepoint Provider separately from the application,
using dynamic linking:
files that use the provider.
- Compile the tracepoint provider with "-I.".
- Link the tracepoint provider with "-llttng-ust".
- - Link application with "-ldl".
+ - Link application with "-ldl" on Linux, "-lc" on BSD.
- Set a LD_PRELOAD environment to preload the tracepoint provider
shared object before starting the application when tracing is
needed.
LT_INIT
## Checks for libraries.
-AC_CHECK_LIB([dl], [dlopen])
+AC_CHECK_LIB([dl], [dlopen],
+[
+ have_libdl=yes
+],
+[
+ #libdl not found, check for dlopen in libc.
+ AC_CHECK_LIB([c], [dlopen],
+ [
+ have_libc_dl=yes
+ ],
+ [
+ AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
+ ])
+])
+AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
+AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
+
AC_CHECK_LIB([pthread], [pthread_create])
# Check for libuuid
have_libc_uuid=yes
],
[
- AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify its location.])
+ AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
])
]
)
# the "html" target helps for documentation (req. code2html)
CC = gcc
-LIBS = -ldl -llttng-ust
+LIBS = -ldl -llttng-ust # On Linux
+#LIBS = -lc -llttng-ust # On BSD
CFLAGS = -I.
all: sample
# provider probe.
CC = gcc
-LIBS = -ldl -llttng-ust
+
+LIBS = -ldl -llttng-ust #On Linux
+#LIBS = -lc -llttng-ust #On BSD
all: sample
lib_LTLIBRARIES = liblttng-ust-fork.la
liblttng_ust_fork_la_SOURCES = ustfork.c
liblttng_ust_fork_la_LIBADD = \
- -ldl \
$(top_builddir)/liblttng-ust/liblttng-ust.la
+
+if LTTNG_UST_BUILD_WITH_LIBDL
+liblttng_ust_fork_la_LIBADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+liblttng_ust_fork_la_LIBADD += -lc
+endif
+
libustfork_CFLAGS = -DUST_COMPONENT=liblttng-ust-fork -fno-strict-aliasing
liblttng_ust_libc_wrapper_la_SOURCES = \
lttng-ust-malloc.c \
ust_libc.h
-liblttng_ust_libc_wrapper_la_LIBADD = -ldl \
+liblttng_ust_libc_wrapper_la_LIBADD = \
-L$(top_builddir)/liblttng-ust/.libs \
-llttng-ust
+if LTTNG_UST_BUILD_WITH_LIBDL
+liblttng_ust_libc_wrapper_la_LIBADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+liblttng_ust_libc_wrapper_la_LIBADD += -lc
+endif
+
noinst_SCRIPTS = run
EXTRA_DIST = run
noinst_PROGRAMS = demo
demo_SOURCES = demo.c ust_tests_demo.h
-# The demo program only depends on libdl.
-demo_LDFLAGS = -ldl
+# The demo program only depends on libdl/libc for dlopen().
+if LTTNG_UST_BUILD_WITH_LIBDL
+demo_LDADD = -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+demo_LDADD = -lc
+endif
+
executing the demo. Executing "demo" without the shell wrapper will not
provide any tracing support. This ensures the demo binary can be
distributed on distros without depending on having liblttng-ust.so in
-place. Note: the "demo" program must be compiled with "-ldl".
+place. Note: the "demo" program must be compiled with "-ldl" on Linux,
+with "-lc" on BSD.
The simplest command to trace the demo program are:
lttng create
libdummy_la_LIBADD = $(top_builddir)/libust/libust.la $(top_builddir)/libust-initializer.o
libdummy_la_LDFLAGS = -rpath /nowhere
dlopen_SOURCES = dlopen.c
-dlopen_LDADD = -ldl $(top_builddir)/libust/libust.la $(top_builddir)/libust-initializer.o
+dlopen_LDADD = $(top_builddir)/libust/libust.la $(top_builddir)/libust-initializer.o
+
+if LTTNG_UST_BUILD_WITH_LIBDL
+dlopen_LDADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+dlopen_LDADD += -lc
+endif
noinst_SCRIPTS = run
EXTRA_DIST = run
noinst_PROGRAMS = hello
hello_SOURCES = hello.c
-hello_LDADD = -ldl liblttng-ust-provider-ust-test-hello.la
+hello_LDADD = liblttng-ust-provider-ust-test-hello.la
+
+if LTTNG_UST_BUILD_WITH_LIBDL
+hello_LDADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+hello_LDADD += -lc
+endif
noinst_SCRIPTS = run
EXTRA_DIST = run
hello_SOURCES = hello.cpp tp.c ust_tests_hello.h
hello_LDADD = $(top_builddir)/liblttng-ust/liblttng-ust.la
+if LTTNG_UST_BUILD_WITH_LIBDL
+hello_LDADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+hello_LDADD += -lc
+endif
+
noinst_SCRIPTS = run
EXTRA_DIST = run
hello_SOURCES = hello.c tp.c ust_tests_hello.h
hello_LDADD = $(top_builddir)/liblttng-ust/liblttng-ust.la
+if LTTNG_UST_BUILD_WITH_LIBDL
+hello_LDADD += -ldl
+endif
+if LTTNG_UST_BUILD_WITH_LIBC_DL
+hello_LDADD += -lc
+endif
+
noinst_SCRIPTS = run
EXTRA_DIST = run
+++ /dev/null
-# Example makefile for build outside of the LTTng-UST tree.
-
-hello:
- ${CC} -O2 -I. -o hello -ldl -llttng-ust hello.c tp.c
-
-.PHONY: clean
-clean:
- rm -f hello
--- /dev/null
+# Example makefile for build outside of the LTTng-UST tree.
+
+hello:
+ ${CC} -O2 -I. -o hello -lc -llttng-ust hello.c tp.c
+
+.PHONY: clean
+clean:
+ rm -f hello
--- /dev/null
+# Example makefile for build outside of the LTTng-UST tree.
+
+hello:
+ ${CC} -O2 -I. -o hello -ldl -llttng-ust hello.c tp.c
+
+.PHONY: clean
+clean:
+ rm -f hello