[dpdk-dev] Building without AVX2 support, with Clang 11, on Ubuntu 20.04.1

Bruce Richardson bruce.richardson at intel.com
Mon Oct 19 15:34:26 CEST 2020


On Mon, Oct 19, 2020 at 04:17:36PM +0300, Ivan Serdyuk wrote:
> Hi there.
> I tried the following:
> 
> export CPPFLAGS=' -stdlib=libc++ ' CXXFLAGS=' -stdlib=libc++ '
> > meson build-clang
> > cd build-clang
> > ninja -j 4
> >
> 
Hi Ivan

Why are you exporting these CPP and CXX flags? The CXX flags will have no
effect on the DPDK build as it does not use c++ code.

> and got such issues:
> 
> 
> > [213/2379] Compiling C object 'lib/76b5a35@@rte_bitratestats at sta
> > /librte_bitratestats_rte_bitrate.c.o'.
> > clang-11: warning: argument unused during compilation: '-stdlib=libc++'
> > [-Wunused-command-line-argument]
> > [219/2379] Compiling C object 'lib/76b5a35@@rte_cfgfile at sta
> > /librte_cfgfile_rte_cfgfile.c.o'.
> > clang-11: warning: argument unused during compilation: '-stdlib=libc++'
> > [-Wunused-command-line-argument]
> > [222/2379] Linking target lib/librte_acl.so.20.0.3.
> > FAILED: lib/librte_acl.so.20.0.3
> > clang  -o lib/librte_acl.so.20.0.3 'lib/76b5a35@@rte_acl at sta/librte_acl_acl_bld.c.o'
> > 'lib/76b5a35@@rte_acl at sta/librte_acl_acl_gen.c.o' 'lib/76b5a35@
> > @rte_acl at sta/librte_acl_acl_run_scalar.c.o' 'lib/76b5a35@@rte_acl at sta/librte_acl_rte_acl.c.o'
> > 'lib/76b5a35@@rte_acl at sta/librte_acl_tb_mem.c.o' 'lib/76b5a35@@rte_acl at sta/librte_acl_acl_run_sse.c.o'
> > -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group
> > -Wl,-soname,librte_acl.so.20.0 -Wl,--no-as-needed -pthread -lm -ldl
> > lib/librte_eal.so.20.0.3 lib/librte_kvargs.so.20.0.3
> > lib/librte_telemetry.so.20.0.3 -Wl,--end-group
> > -Wl,--version-script=/home/oceanfish81/dpdk-20.08/lib/librte_acl/rte_acl_version.map
> > '-Wl,-rpath,$ORIGIN/'
> > -Wl,-rpath-link,/home/oceanfish81/dpdk-20.08/build-clang/lib
> > /usr/bin/ld: lib/76b5a35@@rte_acl at sta/librte_acl_rte_acl.c.o:(.data.rel.ro+0x18):
> > undefined reference to `rte_acl_classify_avx2'
> > clang-11: error: linker command failed with exit code 1 (use -v to see
> > invocation)
> > [225/2379] Generating bbdev.sym_chk with a meson_exe.py custom command.
> > ninja: build stopped: subcommand failed.
> 
> 
> I am using
> 
> > $ clang --version
> > clang version 11.0.0 (https://github.com/llvm/llvm-project.git
> > 0160ad802e899c2922bc9b29564080c22eb0908c)
> > Target: x86_64-unknown-linux-gnu
> 
> 
> I am working under Virtualbox, currently. My host CPU doesn't have any AVX
> support - and there is no guest emulation support for them. Could I bypass
> this somehow, while building librte, as a dependency?
> 

I'm not sure exactly what the problem is here, because DPDK should build
fine on any system that has SSE4.2 support - no AVX2 support is required.
To test, I've done a build of DPDK on an old Core i7 machine with AVX, but
not AVX2, and it built fine with clang 8 (this was using FreeBSD 12),
including the ACL library.

Can you try deleting your build folder and configure it again without
overriding the environmental vars? If it still fails, please paste the
errors here, and also try configuring the build with "-Dmachine=default" to
turn off detecting the present instruction sets and assume an SSE4
baseline.

/Bruce


More information about the dev mailing list