LD Changes To Implicit DSO Linking Update

Jakub Jelinek jakub at redhat.com
Wed Feb 10 11:57:19 UTC 2010


On Wed, Feb 10, 2010 at 08:42:53PM +0900, Mamoru Tasaka wrote:
> Parag N(पराग़) wrote, at 02/10/2010 02:58 AM +9:00:
> > On Tue, Feb 9, 2010 at 11:18 PM, Jakub Jelinek <jakub at redhat.com> wrote:
> >> On Tue, Feb 09, 2010 at 11:09:50PM +0530, Parag N(पराग़) wrote:
> >>>  Anyway I find adding missing DSO to CFLAGS in SPEC is easy solution for now.
> >> They don't belong to CFLAGS, those are flags for compilation.  You want
> >> LDFLAGS or even better add it in configure to LIBS.
> > 
> >   I am not sure then what's wrong with my package. Here is how it
> > failed http://koji.fedoraproject.org/koji/getfile?taskID=1970866&name=build.log
> 
> This build.log says:
> ----------------------------------------------------------------
> /usr/bin/ld: keyevent.o: undefined reference to symbol 'XKeysymToString'
> /usr/bin/ld: note: 'XKeysymToString' is defined in DSO /usr/lib/libX11.so.6 so try adding it to the linker command line
> /usr/lib/libX11.so.6: could not read symbols: Invalid operation
> collect2: ld returned 1 exit status
> ----------------------------------------------------------------
> And actually src/keyevent.c reads:
> ----------------------------------------------------------------
>    275      if (key_disable_overwrite) {
>    276          key_event->keycode = -1;
>    277          key_event->keysym = 0;
>    278          g_print("Not allowed to overwrite KeyCode for %s",
>    279                  XKeysymToString(keysym));
>    280          return;
>    281      }
> ----------------------------------------------------------------
> 
> You should add "AC_CHECK_LIB(X11, XKeysymToString)" to configure.in,
> for example.

BTW, while you touch this package, it would be useful to fix up all the
warnings, I can't believe doing e.g. strcmp on an array of wchar_t can be
right.  It seems with the exception of one wmemset only strcpy/strcmp etc.
are used on keyvalue, so probably keyvalue just should be char array instead
of wchar_t, but you'll need to figure out the right size.  E.g. having
[1] sized keyname can't be right when you copy in 1 char long strings and
use strcmp on it afterwards.

	Jakub


More information about the devel mailing list