[dpdk-dev] [PATCH] mk: fix ABI versioning compile error for combined shared library

Ferruh Yigit ferruh.yigit at intel.com
Mon Nov 2 11:20:23 CET 2015


On Mon, Nov 02, 2015 at 08:10:25AM +0100, Thomas Monjalon wrote:
> 2015-11-02 00:05, Ferruh Yigit:
> > On Mon, Nov 02, 2015 at 12:24:51AM +0100, Thomas Monjalon wrote:
> > > >  ifeq ($(LINK_USING_CC),1)
> > > >  # Override the definition of LD here, since we're linking with CC
> > > >  LD := $(CC) $(CPU_CFLAGS)
> > > > -O_TO_S = $(LD) $(call linkerprefix,$(CPU_LDFLAGS)) \
> > > > +O_TO_S = $(LD) $(call linkerprefix,$(SHARED_LDFLAGS)) \
> > > >  	-shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
> > > >  else
> > > > -O_TO_S = $(LD) $(CPU_LDFLAGS) \
> > > > +O_TO_S = $(LD) $(SHARED_LDFLAGS) \
> > > >  	-shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE)
> > > >  endif
> > > 
> > > Why do you remove CPU_LDFLAGS?
> > 
> > CPU_LDFLAGS shared by other libraries and confilicts with this usage.
> 
> Sorry I don't understand.
> CPU_LDFLAGS is -melf_i386 for Intel 32-bit.
> Why removing it for combined library? What is the conflict?

When combined shared option enabled, CPP_LDFLAGS will be processed and other libraries
CPU_LDFLAGS value will contain this value, and generate an compilation eroor like following:

"
gcc -m64 -Wl,--version-script=./lib/libdpdk.map -Wl,--version-script=/root/dpdk/lib/librte_eal/linuxapp/eal/rte_eal_version.map -shared <objs> -Wl,-soname,librte_eal.so.2.1 -o librte_eal.so.2.1
/usr/bin/ld: cannot open linker script file ./lib/libdpdk.map: No such file or directory
collect2: error: ld returned 1 exit status
"

That is why I have created a new variable, and CPU_LDFLAGS was empty,
but with double check what CPU_LDFLAGS is, it should stay there,

I will update the patch, at worst I can add a new flag instead of replacing CPU_LDFLAGS

Regards,
ferruh



More information about the dev mailing list