This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On Thu, Jan 26, 2017 at 11:25 PM, David Smith <dsmith@redhat.com> wrote:
> 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.
>
Same here
$ make -n stapio
rm -f stapio
echo " CCLD " stapio;gcc -Wall -Wextra -Werror -Wunused -W
-Wformat=2 -ljson-c -lncurses -ltinfo -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
When I try to run the line
gcc -Wall -Wextra -Werror -Wunused -W -Wformat=2 -ljson-c -lncurses
-ltinfo -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
I am getting
/home/arkady/systemtap-3.0/staprun/monitor.c:151: undefined reference
to `json_object_object_get_ex'
/home/arkady/systemtap-3.0/staprun/monitor.c:153: undefined reference
to `json_object_get_string'
monitor.o: In function `comp_state':
/home/arkady/systemtap-3.0/staprun/monitor.c:102: undefined reference
to `json_object_object_get_ex'
.....
/home/arkady/systemtap-3.0/staprun/monitor.c:151: undefined reference
to `json_object_object_get_ex'
/home/arkady/systemtap-3.0/staprun/monitor.c:152: undefined reference
to `json_object_object_get_ex'
/home/arkady/systemtap-3.0/staprun/monitor.c:153: undefined reference
to `json_object_get_string'
/home/arkady/systemtap-3.0/staprun/monitor.c:153: undefined reference
to `json_object_get_string'
monitor.o: In function `comp_state':
/home/arkady/systemtap-3.0/staprun/monitor.c:101: undefined reference
to `json_object_object_get_ex'
/home/arkady/systemtap-3.0/staprun/monitor.c:102: undefined reference
to `json_object_object_get_ex'
....
I attached the whole 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
No errors, gcc created an executable jsonc-test.
>
> Does it work for you?
>
>> On Thu, Jan 26, 2017 at 10:40 PM, David Smith <dsmith@redhat.com> wrote:
>>> On 01/26/2017 01:38 PM, Arkady wrote:
>>>> On Thu, Jan 26, 2017 at 7:43 PM, David Smith <dsmith@redhat.com> 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)
Attachment:
gcc.err
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |