[dpdk-dev] [PATCH] mk: fix link to combined library

Bruce Richardson bruce.richardson at intel.com
Wed Dec 17 11:38:16 CET 2014


On Wed, Dec 17, 2014 at 12:45:32AM +0100, Thomas Monjalon wrote:
> 2014-12-11 02:54, Hiroshi Shimamoto:
> > From: Hiroshi Shimamoto <h-shimamoto at ct.jp.nec.com>
> > 
> > The application should be linked to the single combined library in the
> > condition that both of CONFIG_RTE_BUILD_COMBINE_LIB and
> > CONFIG_RTE_BUILD_SHARED_LIB are enabled.
> > 
> > The current makefile generates an application that links to each library.
> > This patch fixes to link the single library.
> > 
> > Before
> > $ ldd x86_64-ivshmem-linuxapp-gcc/app/test
> > 	linux-vdso.so.1 =>  (0x00007fff232a1000)
> > 	librte_distributor.so => not found
> > 	librte_kni.so => not found
> > 	librte_ivshmem.so => not found
> > 	librte_pipeline.so => not found
> > 	librte_table.so => not found
> > 	librte_port.so => not found
> > 	librte_timer.so => not found
> > 	librte_hash.so => not found
> > 	librte_lpm.so => not found
> > 	librte_power.so => not found
> > 	librte_acl.so => not found
> > 	librte_meter.so => not found
> > 	librte_sched.so => not found
> > 	libm.so.6 => /lib64/libm.so.6 (0x00007fc638020000)
> > 	librt.so.1 => /lib64/librt.so.1 (0x00007fc637e18000)
> > 	librte_kvargs.so => not found
> > 	librte_mbuf.so => not found
> > 	librte_ip_frag.so => not found
> > 	libethdev.so => not found
> > 	librte_malloc.so => not found
> > 	librte_mempool.so => not found
> > 	librte_ring.so => not found
> > 	librte_eal.so => not found
> > 	librte_cmdline.so => not found
> > 	librte_cfgfile.so => not found
> > 	librte_pmd_bond.so => not found
> > 	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc637bfe000)
> > 	libdl.so.2 => /lib64/libdl.so.2 (0x00007fc6379fa000)
> > 	libintel_dpdk.so => not found
> > 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc6377dd000)
> > 	libc.so.6 => /lib64/libc.so.6 (0x00007fc63741c000)
> > 	/lib64/ld-linux-x86-64.so.2 (0x00007fc638330000)
> > 
> > After
> > $ ldd x86_64-ivshmem-linuxapp-gcc/app/test
> > 	linux-vdso.so.1 =>  (0x00007fffb79fe000)
> > 	librt.so.1 => /lib64/librt.so.1 (0x00007f0d8a971000)
> > 	libm.so.6 => /lib64/libm.so.6 (0x00007f0d8a66f000)
> > 	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0d8a458000)
> > 	libdl.so.2 => /lib64/libdl.so.2 (0x00007f0d8a254000)
> > 	libintel_dpdk.so => not found
> > 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0d8a037000)
> > 	libc.so.6 => /lib64/libc.so.6 (0x00007f0d89c76000)
> > 	/lib64/ld-linux-x86-64.so.2 (0x00007f0d8ab82000)
> > 
> > Signed-off-by: Hiroshi Shimamoto <h-shimamoto at ct.jp.nec.com>
> > Reviewed-by: Hayato Momma <h-momma at ce.jp.nec.com>
> 
> It is what I suggested to Sergio:
> 	http://dpdk.org/ml/archives/dev/2014-December/009116.html
> 
> Acked-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
> 
> Applied
> 
> Thanks
> -- 
> Thomas

None of the example apps are compiling for me today, and git bisect indicates that
this patch is the culprit. I'm investigating, but if flagging it here in case 
someone else finds a fix faster than I do.

The error is due to the libraries being missing on the link command, with the
out-of-the-box configuration i.e. individual static libs.

/Bruce

make: Entering directory `/home/bruce/dpdk.org/examples/helloworld'
mkdir -p /home/bruce/dpdk.org/examples/helloworld/build
make -C /home/bruce/dpdk.org/examples/helloworld/build -f /home/bruce/dpdk.org/examples/helloworld/Makefile \
        S=/home/bruce/dpdk.org/examples/helloworld O=/home/bruce/dpdk.org/examples/helloworld/build SRCDIR=/home/bruce/dpdk.org/examples/helloworld
gcc -m64 -pthread  -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_COMPILE_TIME_CPUFLAGS=RTE_CPUFLAG_SSE,RTE_CPUFLAG_SSE2,RTE_CPUFLAG_SSE3,RTE_CPUFLAG_SSSE3,RTE_CPUFLAG_SSE4_1,RTE_CPUFLAG_SSE4_2,RTE_CPUFLAG_AES,RTE_CPUFLAG_PCLMULQDQ,RTE_CPUFLAG_AVX  -I/home/bruce/dpdk.org/examples/helloworld/build/include -I/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include -include /home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_config.h -O3 -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings  -Wl,-Map=helloworld.map,--cref -o helloworld main.o -Wl,--no-as-needed -Wl,-export-dynamic -L/home/bruce/dpdk.org/examples/helloworld/build/lib -L/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/lib  -L/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/lib -Wl,--whole-archive -Wl,--start-group -Wl,-lrt -Wl,-lm -Wl,-ldl -Wl,--end-group -Wl,--no-whole-archive
main.o: In function `rte_lcore_id':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:85: undefined reference to `per_lcore__lcore_id'
main.o: In function `main':
/home/bruce/dpdk.org/examples/helloworld/main.c:64: undefined reference to `rte_eal_init'
main.o: In function `rte_lcore_is_enabled':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:170: undefined reference to `rte_eal_get_configuration'
main.o: In function `rte_get_master_lcore':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:97: undefined reference to `rte_eal_get_configuration'
main.o: In function `rte_lcore_is_enabled':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:170: undefined reference to `rte_eal_get_configuration'
main.o: In function `rte_get_master_lcore':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:97: undefined reference to `rte_eal_get_configuration'
main.o: In function `main':
/home/bruce/dpdk.org/examples/helloworld/main.c:70: undefined reference to `rte_eal_remote_launch'
main.o: In function `rte_lcore_id':
/home/bruce/dpdk.org/x86_64-native-linuxapp-gcc/include/rte_lcore.h:85: undefined reference to `per_lcore__lcore_id'
main.o: In function `main':
/home/bruce/dpdk.org/examples/helloworld/main.c:76: undefined reference to `rte_eal_mp_wait_lcore'
/home/bruce/dpdk.org/examples/helloworld/main.c:66: undefined reference to `__rte_panic'
collect2: error: ld returned 1 exit status
make[1]: *** [helloworld] Error 1
make: *** [all] Error 2
make: Leaving directory `/home/bruce/dpdk.org/examples/helloworld'



More information about the dev mailing list