Building volk fails with 'i386 architecture of input file is incompatible with i386:x86-64 output'

Hello,

I’m trying to build gnuradio (v3.5.1-103-ge4693dfb) by doing:

$ ./bootstrap
$ ./configure
$ make

This results in (from configure):

The following architectures will be built:
     generic 32 64 3dnow abm popcount mmx sse sse2 orc sse3 ssse3 

sse4_a sse4_1 sse4_2 avx

Now when I build I am running into the following error:

/usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/../../../../x86_64-pc-linux-gnu/bin/ld: 

i386 architecture of input file
./.libs/libvolk_ssse3_32.a(libvolk_ssse3_32_la-volk_machine_ssse3_32.o)' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/../../../../x86_64-pc-linux-gnu/bin/ld: i386 architecture of input file./.libs/libvolk_sse2_32.a(libvolk_sse2_32_la-volk_machine_sse2_32.o)’
is incompatible with i386:x86-64 output
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/…/…/…/…/x86_64-pc-linux-gnu/bin/ld:
i386 architecture of input file
./.libs/libvolk_sse4_1_32.a(libvolk_sse4_1_32_la-volk_machine_sse4_1_32.o)' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/../../../../x86_64-pc-linux-gnu/bin/ld: i386 architecture of input file./.libs/libvolk_sse4_a_32.a(libvolk_sse4_a_32_la-volk_machine_sse4_a_32.o)’
is incompatible with i386:x86-64 output
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/…/…/…/…/x86_64-pc-linux-gnu/bin/ld:
i386 architecture of input file
./.libs/libvolk_sse4_2_32.a(libvolk_sse4_2_32_la-volk_machine_sse4_2_32.o)' is incompatible with i386:x86-64 output /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/../../../../x86_64-pc-linux-gnu/bin/ld: i386 architecture of input file./.libs/libvolk_avx_32.a(libvolk_avx_32_la-volk_machine_avx_32.o)’ is
incompatible with i386:x86-64 output
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.2/…/…/…/…/x86_64-pc-linux-gnu/bin/ld:
i386 architecture of input file
`./.libs/libvolk_sse3_32.a(libvolk_sse3_32_la-volk_machine_sse3_32.o)’
is incompatible with i386:x86-64 output
collect2: ld returned 1 exit status

Even if I try to leave out the 32bit arch by doing:

$ ./configure --with-lv_arch="generic 64 3dnow abm popcount mmx sse 

sse2 orc sse3 ssse3 sse4_a sse4_1 sse4_2 avx"
[…]
The following architectures will be built:
generic 64 3dnow abm popcount mmx sse sse2 orc sse3 ssse3
sse4_a sse4_1 sse4_2 avx

I will get the following error:

./.libs/libvolk.so: undefined reference to `volk_machine_sse4_a_32'
./.libs/libvolk.so: undefined reference to `volk_machine_sse4_2_32'
./.libs/libvolk.so: undefined reference to `volk_machine_sse4_1_32'
./.libs/libvolk.so: undefined reference to `volk_machine_ssse3_32'
./.libs/libvolk.so: undefined reference to `volk_machine_avx_32'
./.libs/libvolk.so: undefined reference to `volk_machine_sse2_32'
./.libs/libvolk.so: undefined reference to `volk_machine_sse3_32'
collect2: ld returned 1 exit status

How to solve this issue?

-Markus

How to solve this issue?

Build with cmake instead :slight_smile:
http://gnuradio.org/redmine/projects/gnuradio/wiki/CMakeWork

-josh