On Tue, Aug 02, 2016 at 12:10:55PM +0900, Namhyung Kim wrote: > 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.
agreed, I'll queue your patch if v2 is needed thanks, jirka > > > 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 >