On Mon, Aug 01, 2016 at 07:41:28PM +0200, Jiri Olsa wrote: > hi, > sending traceevent changes to make this lib installable > under rpm spec. > > Basically adding support to: > - install header files > - install version links > > Having this patchset applied over the fedora source, > I could built following rpms: > > kernel-tools-libs > kernel-tools-libs-devel > > with added libtraceevent stuff: > > $ rpm -ql kernel-tools-libs > /usr/lib64/libcpupower.so.0 > /usr/lib64/libcpupower.so.0.0.0 > /usr/lib64/libtraceevent.so.1 > /usr/lib64/libtraceevent.so.1.1.0 > > $ rpm -ql kernel-tools-libs-devel > /usr/include/cpufreq.h > /usr/include/traceevent > /usr/include/traceevent/event-parse.h > /usr/include/traceevent/event-utils.h > /usr/include/traceevent/kbuffer.h > /usr/lib64/libcpupower.so > /usr/lib64/libtraceevent.a > /usr/lib64/libtraceevent.so > > and could build following ex.c outside the kernel tree: > > $ cat ex.c > #include <traceevent/event-parse.h> > > int main(void) > { > struct pevent *pevent = pevent_alloc(); > printf("krava %p\n", pevent); > return 0; > } > $ gcc -o ex ex.c -ltraceevent -ldl > $ ./ex > krava 0x10c6010 > $
On my system, building ex.c with libtraceevent failed: $ gcc -I ~/.local/include/ ex.c -L ~/.local/lib64 -ltraceevent -ldl /home/namhyung/.local/lib64/libtraceevent.so: undefined reference to `str_error_r' collect2: error: ld returned 1 exit status Also I think it'd be better for libtraceevent has dependency to libdl explicitly so that we can get rid of -ldl at the end. >From ac7dc027274cb31f5860c4cf6219ea7584611e17 Mon Sep 17 00:00:00 2001 From: Namhyung Kim <namhy...@kernel.org> Date: Tue, 2 Aug 2016 12:03:00 +0900 Subject: [PATCH] tools lib traceevent: Add dependency to libdl The libtraceevent has dependency to libdl due to plugins. So if external program wants to link libtraceevent it also needs to add -ldl to the compiler command line. Make it explicit so that external programs doesn't care about the internel dependency of libtraceevent anymore. Signed-off-by: Namhyung Kim <namhy...@kernel.org> --- tools/lib/traceevent/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile index c76012ebdb9c..bae0c090c638 100644 --- a/tools/lib/traceevent/Makefile +++ b/tools/lib/traceevent/Makefile @@ -173,7 +173,7 @@ $(TE_IN): force $(Q)$(MAKE) $(build)=libtraceevent $(OUTPUT)libtraceevent.so.$(EVENT_PARSE_VERSION): $(TE_IN) - $(QUIET_LINK)$(CC) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@ + $(QUIET_LINK)$(CC) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@ -ldl @ln -sf $(@F) $(OUTPUT)libtraceevent.so @ln -sf $(@F) $(OUTPUT)libtraceevent.so.$(EP_VERSION) -- 2.9.2