Gilles,

I installed the 4.8 series of compilers on the Pi 2 (gcc, g++, and gfortran).
I did a fresh untar of openmpi-1.8.5. I set the environment variables
CC, CXX, and FC to point to the 4.8 compilers. However, the build failed
again.

Making all in config
make[1]: Entering directory '/work/pi/src/openmpi-1.8.5/config'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/work/pi/src/openmpi-1.8.5/config'
Making all in contrib
make[1]: Entering directory '/work/pi/src/openmpi-1.8.5/contrib'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/work/pi/src/openmpi-1.8.5/contrib'
Making all in opal
make[1]: Entering directory '/work/pi/src/openmpi-1.8.5/opal'
Making all in include
make[2]: Entering directory '/work/pi/src/openmpi-1.8.5/opal/include'
make  all-am
make[3]: Entering directory '/work/pi/src/openmpi-1.8.5/opal/include'
make[3]: Leaving directory '/work/pi/src/openmpi-1.8.5/opal/include'
make[2]: Leaving directory '/work/pi/src/openmpi-1.8.5/opal/include'
Making all in asm
make[2]: Entering directory '/work/pi/src/openmpi-1.8.5/opal/asm'
  CC       asm.lo
rm -f atomic-asm.S
ln -s "../../opal/asm/generated/atomic-local.s" atomic-asm.S
  CPPAS    atomic-asm.lo
atomic-asm.S: Assembler messages:
atomic-asm.S:7: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:15: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:23: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:55: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:70: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:86: Error: selected processor does not support ARM mode `ldrexd r4,r5,[r0]' atomic-asm.S:91: Error: selected processor does not support ARM mode `strexd r1,r6,r7,[r0]' atomic-asm.S:107: Error: selected processor does not support ARM mode `ldrexd r4,r5,[r0]' atomic-asm.S:112: Error: selected processor does not support ARM mode `strexd r1,r6,r7,[r0]'
atomic-asm.S:115: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:130: Error: selected processor does not support ARM mode `ldrexd r4,r5,[r0]'
atomic-asm.S:135: Error: selected processor does not support ARM mode `dmb'
atomic-asm.S:136: Error: selected processor does not support ARM mode `strexd r1,r6,r7,[r0]'
Makefile:1608: recipe for target 'atomic-asm.lo' failed
make[2]: *** [atomic-asm.lo] Error 1
make[2]: Leaving directory '/work/pi/src/openmpi-1.8.5/opal/asm'
Makefile:2149: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/work/pi/src/openmpi-1.8.5/opal'
Makefile:1698: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1



I checked the gcc build:

pi@raspberrypi /work/pi/src/openmpi-1.8.5 $ gcc-4.8 -v
Using built-in specs.
COLLECT_GCC=gcc-4.8
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.8/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 4.8.2-21~rpi3rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.8.2 (Raspbian 4.8.2-21~rpi3rpi1)


Looks like it was built with armv6 again. (ugh)

I also checked the Makefile to ensure I was using the correct compilers:

AWK = mawk
BASH = /bin/bash
CC = /usr/bin/gcc-4.8 -std=gnu99
CCAS = /usr/bin/gcc-4.8 -std=gnu99
CCASDEPMODE = depmode=gcc3
CCASFLAGS = -O3 -DNDEBUG -finline-functions -fno-strict-aliasing
CCDEPMODE = depmode=gcc3
CFLAGS = -O3 -DNDEBUG -finline-functions -fno-strict-aliasing -pthread
CFLAGS_WITHOUT_OPTFLAGS =  -DNDEBUG -fno-strict-aliasing -pthread
CLEANFILES = *~ .\#*
CONFIGURE_DEPENDENCIES = $(top_srcdir)/VERSION
CPP = /usr/bin/gcc-4.8 -E
CPPFLAGS = -I$(top_srcdir) -I/work/pi/src/openmpi-1.8.5/opal/mca/hwloc/hwloc191/h wloc/include -I/work/pi/src/openmpi-1.8.5/opal/mca/event/libevent2021/libevent -I/w
ork/pi/src/openmpi-1.8.5/opal/mca/event/libevent2021/libevent/include
CXX = /usr/bin/g++-4.8
CXXCPP = /usr/bin/g++-4.8 -E
CXXCPPFLAGS = -I$(top_srcdir)
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -O3 -DNDEBUG -finline-functions -pthread
CYGPATH_W = echo
DEBUGGER_CFLAGS = -g
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DLLTOOL = false
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FC = /usr/bin/gfortran-4.8
FCFLAGS =
FCFLAGS_f =
FCFLAGS_f90 =
FFLAGS =
FGREP = /bin/grep -F
GREP = /bin/grep


Thanks!

Jeff


Jeff,

Raspbian is built for armv6
(unlike linaro which is built for armv7)

that being said, you are running on an armv7 cpu, so i am not sure "cross-compiling" is appropriate. (e.g. if you run a 32 bits gcc binary on an x86_64 os to build a x86_64 binary,
is this called cross compilation ?)

my guess is raspbian gcc 4.6 is not able to compile for armv7, even with some extra flags.

can you try
sudo apt-get install gcc-4.8 g++-4.8
and configure with CC=gcc48 CXX=g++48
(or whatever the gcc 4.8 compiler name is)

if that works, i will think of updating configure so it fails with an understandable error message
when building for armv6

Cheers,

Gilles

On 6/10/2015 2:18 AM, Jeff Layton wrote:
Gilles,

I was looking in Raspbian a little and do you know what I found?
When I do "gcc -v" it says it was built with "--with-arch=armv6".
Since I'm trying to compile on a Pi 2, doesn't this mean I'm
cross-compiling?

Thanks!

Jeff

Jeff,

btw, did you try a pI 1 before a pi2 ?

I checked some forums, and you will likely have to upgrade gcc to 4.8

a simpler option could be linaro https://www.raspberrypi.org/forums/viewtopic.php?f=56&t=98997

Cheers,

Gilles

On Tuesday, June 9, 2015, Gilles Gouaillardet <gilles.gouaillar...@gmail.com <mailto:gilles.gouaillar...@gmail.com>> wrote:

    Jeff,

    can you
    gcc -march=armv7-a foo.c

    Cheers,

    Gilles

    On Tuesday, June 9, 2015, Jeff Layton <layto...@att.net
    <javascript:_e(%7B%7D,'cvml','layto...@att.net');>> wrote:

        Gilles,

        I'm not cross-compiling - I'm building on the Pi 2.

        I'm not sure how to check if gcc can generate armv7 code.
        I'm using Raspbian and I'm just using the default compilers
        that come with it (I think it's gcc 4.6.3).

        Thanks!

        Jeff

            Jeff,

            dmb is available only on ARMv7 (Pi 2)

            if i remember correctly, you are building Open MPI on
            ARMv7 as well (Pi 2),
            so this is not a cross compilation issue.

            if you configure with -march=armv7, the relevant log is
            libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I.
            -I../../opal/include -I../../orte/include
            -I../../ompi/include -I../../oshmem/include
            -I../../opal/mca/hwloc/hwloc191/hwloc/include/private/autogen
            -I../../opal/mca/hwloc/hwloc191/hwloc/include/hwloc/autogen
            -I../..
            -I/work/pi/src/openmpi-1.8.5/opal/mca/hwloc/hwloc191/hwloc/include
            -I/work/pi/src/openmpi-1.8.5/opal/mca/event/libevent2021/libevent
            
-I/work/pi/src/openmpi-1.8.5/opal/mca/event/libevent2021/libevent/include
            -march=armv7 -MT atomic-asm.lo -MD -MP -MF
            .deps/atomic-asm.Tpo -c atomic-asm.S  -fPIC -DPIC -o
            .libs/atomic-asm.o^M
            atomic-asm.S:1:0: error: target CPU does not support ARM
            mode

            which is very puzzling ...

            can you confirm
            1) you are not cross compiling
            2) your gcc can generate code for armv7 ?

            Cheers,

            Gilles




            On 6/9/2015 1:48 AM, Jeff Layton wrote:

                Jeff,

                Sorry - I was traveling for a week and didn't have
                to the RPi.

                    What happens if you don't supply CCASFLAGS at all?


                The output from "make" is below. It died when it
                tried to compile
                atomic-local. It says the processor doesn't support
                ARM mode "dmb".

                Thanks!

                Jeff



                pi@raspberrypi /work/pi/src/openmpi-1.8.5 $ make
                Making all in config
                make[1]: Entering directory
                '/work/pi/src/openmpi-1.8.5/config'
                make[1]: Nothing to be done for 'all'.
                make[1]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/config'
                Making all in contrib
                make[1]: Entering directory
                '/work/pi/src/openmpi-1.8.5/contrib'
                make[1]: Nothing to be done for 'all'.
                make[1]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/contrib'
                Making all in opal
                make[1]: Entering directory
                '/work/pi/src/openmpi-1.8.5/opal'
                Making all in include
                make[2]: Entering directory
                '/work/pi/src/openmpi-1.8.5/opal/include'
                make  all-am
                make[3]: Entering directory
                '/work/pi/src/openmpi-1.8.5/opal/include'
                make[3]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/opal/include'
                make[2]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/opal/include'
                Making all in asm
                make[2]: Entering directory
                '/work/pi/src/openmpi-1.8.5/opal/asm'
                  CC       asm.lo
                rm -f atomic-asm.S
                ln -s "../../opal/asm/generated/atomic-local.s"
                atomic-asm.S
                  CPPAS    atomic-asm.lo
                atomic-asm.S: Assembler messages:
                atomic-asm.S:7: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:15: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:23: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:55: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:70: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:86: Error: selected processor does not
                support ARM mode `ldrexd r4,r5,[r0]'
                atomic-asm.S:91: Error: selected processor does not
                support ARM mode `strexd r1,r6,r7,[r0]'
                atomic-asm.S:107: Error: selected processor does not
                support ARM mode `ldrexd r4,r5,[r0]'
                atomic-asm.S:112: Error: selected processor does not
                support ARM mode `strexd r1,r6,r7,[r0]'
                atomic-asm.S:115: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:130: Error: selected processor does not
                support ARM mode `ldrexd r4,r5,[r0]'
                atomic-asm.S:135: Error: selected processor does not
                support ARM mode `dmb'
                atomic-asm.S:136: Error: selected processor does not
                support ARM mode `strexd r1,r6,r7,[r0]'
                Makefile:1608: recipe for target 'atomic-asm.lo' failed
                make[2]: *** [atomic-asm.lo] Error 1
                make[2]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/opal/asm'
                Makefile:2149: recipe for target 'all-recursive' failed
                make[1]: *** [all-recursive] Error 1
                make[1]: Leaving directory
                '/work/pi/src/openmpi-1.8.5/opal'
                Makefile:1698: recipe for target 'all-recursive' failed
                make: *** [all-recursive] Error 1



Reply via email to