On 01/26/2017 02:54 PM, Arkady wrote: > In my case this is > 116: 0000000000003a30 49 FUNC GLOBAL DEFAULT 11 > json_object_object_get_ex > > Symlink to /usr/lib/x86_64-linux-gnu/libjson-c.so.2.0.0 > Package config > > prefix=/usr > exec_prefix=${prefix} > libdir=${prefix}/lib/x86_64-linux-gnu > includedir=${prefix}/include > > Name: json-c > Description: JSON implementation in C > Version: 0.11.99 > Requires: > Libs: -L${libdir} -ljson-c > Cflags: -I${includedir}/json-c Hmm, ok. Let's try the following to see what command is being run to link stapio - "make -n stapio". On my system, the output looks like (run from the 'staprun' directory): ==== # make -n stapio rm -f stapio echo " CCLD " stapio;gcc -Wall -Wextra -Werror -Wunused -W -Wformat=2 -g -O2 -fstack-protector-all -D_FORTIFY_SOURCE=2 -o stapio stapio.o mainloop.o common.o ctl.o relay.o relay_old.o monitor.o libstrfloctime.a -lpthread -ljson-c -lpanel -lncurses -ltinfo ==== The above output makes sense: gcc {other options} -o stapio {bunch of .o files} {libraries} -ljson-c {other libraries} Hopefully we'll see something similar with your output. I've also attached a small test program. For me it compiles/links correctly with: # gcc -o jsonc-test jsonc-test.c -ljson-c Does it work for you? > On Thu, Jan 26, 2017 at 10:40 PM, David Smith wrote: >> On 01/26/2017 01:38 PM, Arkady wrote: >>> On Thu, Jan 26, 2017 at 7:43 PM, David Smith wrote: >>>> On 01/26/2017 05:17 AM, Arkady wrote: >>>>> Hi, >>>>> >>>>> This thread is probably the closest to the problem I experience. >>>>> >>>>> I need --monitor support in the stap. I am trying to compile the 3.0 release >>>>> On my Ubuntu 4.4.0-59-generic >>>>> >>>>> make[3]: Entering directory '/home/arkady/systemtap-3.0/staprun' >>>>> CCLD stapio >>>>> monitor.o: In function `comp_name': >>>>> /home/arkady/systemtap-3.0/staprun/monitor.c:151: undefined reference >>>>> to `json_object_object_get_ex' >>>>> I have ./lib/x86_64-linux-gnu/libjson.a and the library contains >>>>> json_object_object_get_ex >>>>> ................... >>>>> >>>>> What am I missing? >>>> >>>> Am I correct in thinking that libjson is installed in your home >>>> directory somewhere and isn't a system library? If so, that might be >>>> your problem. We can probably pass more options to configure to add that >>>> directory to the link search path. >>>> >>>> Another possibility is that the link is looking for a shared library >>>> (.so) and you've got a static library (.a). >>>> >>> >>> This is what I have >>> /usr/lib/x86_64-linux-gnu/libjson-c.so >>> /usr/lib/x86_64-linux-gnu/libjson-c.a >>> /usr/lib/x86_64-linux-gnu/libjson-c.so.2 >> >> So I was wrong about the library being installed in your home directory. >> >>> Can it be an order of the object files and libraries? >> >> I'd doubt it. I wonder if we've got a json-c version problem. Let's see >> if your shared library has that symbol in it. When I run "readelf -Ws" >> on mine, I see the following: >> >> ==== >> # readelf -Ws /lib64/libjson-c.so | fgrep json_object_object_get_ex >> 115: 0000000000003790 49 FUNC GLOBAL DEFAULT 11 >> json_object_object_get_ex >> ==== >> >> What does yours return? >> >> Also, what version of json-c do you have? I've got json-c-0.12-7. >> >> -- >> David Smith >> dsmith@redhat.com >> Red Hat >> http://www.redhat.com >> 256.217.0141 (direct) >> 256.837.0057 (fax) -- David Smith dsmith@redhat.com Red Hat http://www.redhat.com 256.217.0141 (direct) 256.837.0057 (fax)