Errors on compiling the javacpp-present

beaglebone blackgcc

I am trying to compiling the javacv in the beaglebone black. During compiling the javacpp-present. It shows the error

sorry, unimplemented: Thumb-1 hard-float VFP ABI

Here is the command I am using for the compile

mvn clean install  -DskipTests -Dplatform.name=linux-arm -Dplatform.compiler=arm-linux-gnueabihf-gcc

And the entire message about the error:

[INFO] /usr/bin/arm-linux-gnueabihf-g++-4.8 -I/media/card/javacpp-presets/opencv/cppbuild/linux-arm/include/ -I/usr/lib/jvm/java-7-openjdk-armhf/include -I/usr/lib/jvm/java-7-openjdk-armhf/include/linux /media/card/javacpp-presets/opencv/target/classes/org/bytedeco/javacpp/jniopencv_calib3d.cpp -march=armv5te -Wl,-rpath,$ORIGIN/ -Wall -O3 -fPIC -shared -s -o /media/card/javacpp-presets/opencv/target/classes/org/bytedeco/javacpp/linux-arm/libjniopencv_calib3d.so -L/media/card/javacpp-presets/opencv/cppbuild/linux-arm/lib/ -Wl,-rpath,/media/card/javacpp-presets/opencv/cppbuild/linux-arm/lib/ -lopencv_calib3d -lopencv_features2d -lopencv_ml -lopencv_flann -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
In file included from /usr/include/stdio.h:934:0,
             from /usr/lib/jvm/java-7-openjdk-armhf/include/jni.h:39,
             from /media/card/javacpp-presets/opencv/target/classes/org/bytedeco/javacpp/jniopencv_calib3d.cpp:26:
/usr/include/arm-linux-gnueabihf/bits/stdio.h: In function ‘int getchar()’:
/usr/include/arm-linux-gnueabihf/bits/stdio.h:44:14: sorry, unimplemented: Thumb-1 hard-float VFP ABI
getchar (void)

Anyhow, the command about the g++ seems correct, but I have no idea why the error occurs.

Best Answer

You have (I believe) selected the wrong architecture:

-march=armv5te

So it's set to ARMv5TE. But the Beaglebone Black has an AM3358 Cortex-A8 which is based on the ARMv7-A architecture.

It could be that you would have to specify that a hardware floating point unit is available. But I think it should be better to specify the correct architecture.

On the Debian page about the armhf port it says:

Currently the Debian armhf port requires at least an ARMv7 CPU with Thumb-2 and VFP3D16.

So they probably check in the armhf headers, that the selected architecture matches the minimum requirements.