compilation error on CURRENT-20100118

Julien ÉLIE julien at trigofacile.com
Thu Jan 21 20:34:12 UTC 2010


Hi Katsuhiro,

> cd backends  && make all
> gcc -multiply_defined suppress -o inndf inndf.o
> /tmp/inn-CURRENT-20100118/storage/libstorage.a 
> /tmp/inn-CURRENT-20100118/history/libinnhist.a
> /usr/bin/ld: Undefined symbols:
> _OVrealnow
> _OVstatall
> collect2: ld returned 1 exit status
> make[1]: *** [inndf] Error 1
> make: *** [all-backends] Error 2
>
> I can create inndf manually by adding ov.o at the end of the line,
> but it's just for workaround.

That's strange because libstorage.a should normally contain ov.o:

SOURCES       = expire.c interface.c methods.c ov.c overdata.c overview.c \
                ovmethods.c $(METHOD_SOURCES)
OBJECTS       = $(SOURCES:.c=.o)

libstorage.a: $(OBJECTS)
        ar r $@ $(OBJECTS)
        $(RANLIB) libstorage.a


Why would we have to explicitly use another link to ov.o?



> overchan cannot be created and also
> storage/tradindexed/tdx-util not with the same problem.

What's the problem for tdx-util then?



> I just remember, a few years ago, I saw the same problem
> creating storage/buffindexed/buffindexed_d and added ov.o
> at the link stage.

I see that was when you added shared memory support on ovbuff.
+ buffindexed/shmem.o expire.o ov.o

Strange.  Maybe a platform-specific issue?
(I have just tried on Debian without "ov.o" for buffindexed_d
and it worked fined.)

-- 
Julien ÉLIE

« As promised, here's the patch to do this.  Not only is it good
  (it compiles), but it is perfect (it boots).  Up 9 minutes so far
  without problems. » (Richard Gooch on linux-kernel)




More information about the inn-workers mailing list