subsurface-mobile build error undefined reference to 'rand'

Rick Walsh rickmwalsh at gmail.com
Mon Jun 19 03:31:16 PDT 2017


On 19 June 2017 at 08:06, Lubomir I. Ivanov <neolit123 at gmail.com> wrote:

> On 17 June 2017 at 06:54, Rick Walsh <rickmwalsh at gmail.com> wrote:
> > Hi,
> > It turns out I might actually have a little bit of time to dedicate to
> > Subsurface over the next couple of weeks, and I thought I'd start by
> > reviving my Android build chain.  Running packaging/android/build.sh, I
> get
> > stuck with this error.  Does anyone smarter than me know what's going on?
> > I'm on Fedora 25, with android-ndk-r13b and Qt5.9.
> >
> > $ sh packaging/android/build.sh
>
> <snip>
>
> > /home/rick/src/subsurface/libgit2-0.24.1/src/cache.c:117: error:
> undefined
> > reference to 'rand'
>
> sounds like it isn't linking against the platform libc.a. i doubt that
> rand() is missing in the standard library implementation...maybe
> wrapping another function but not missing.
>
> you can try:
> $ build.sh VERBOSE=1
>
> to see what the linker is doing.
>
> i haven't tried the Subsurface Android build script, but i get
> something like the bellow from the "ndk-build" script when building a
> generic test library:
>
> c:/bin/android_ndk/build//../toolchains/llvm/prebuilt/
> windows-x86_64/bin/clang++
> .exe -Wl,-soname,libtesttest.so -shared
> --sysroot=c:/bin/android_ndk/build//../pl
> atforms/android-19/arch-arm testtest.o -lgcc  -gcc-toolchain c:/bin/
> android_ndk/build//../toolchains/arm-linux-androideabi-4.9/prebuilt/
> windows-x86_
> 64 -no-canonical-prefixes -target armv7-none-linux-androideabi
> -Wl,--fix-cortex-
> a8  -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro
> -Wl,-z,now
>  -Wl,--warn-shared-textrel -Wl,--fatal-warnings    -lc -lm -o
> libtesttest.so
>
> it tells me that it sets the platform location correctly (--sysroot)
> and it links against -lc (rand()) should be part libc.a and libc.so).
> it also sets the toolchain correctly (-gcc-toolchain) and -lgcc is
> located in there.
>
> Thanks for the tip.  Adding VERBOSE=1 to the command line didn't work as
expected - it just silenced the output, but I added it to the make line
within build.sh, and that provides some more useful output.  I can't find
any reference to -lc, -gcc-toolchain, or -lgcc.

[ 76%] Building CXX object
CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o
/home/rick/src/subsurface/ndk-arm/bin/arm-linux-androideabi-g++  -DANDROID
-DBT_SUPPORT -DKIRIGAMI_BUILD_TYPE_STATIC -DQT_ANDROIDEXTRAS_LIB
-DQT_BLUETOOTH_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_GUI_LIB
-DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_QML_LIB -DQT_QUICKCONTROLS2_LIB
-DQT_QUICK_LIB -DQT_SVG_LIB -DQT_WIDGETS_LIB -DSERIAL_FTDI
-DSUBSURFACE_MOBILE -DSUBSURFACE_SOURCE=\"/home/rick/src/subsurface\"
-Dsubsurface_mobile_EXPORTS
-I/home/rick/src/subsurface/subsurface-mobile-build-arm/subsurface-mobile_autogen/include
-isystem /home/rick/src/subsurface/ndk-arm/sysroot/usr/include -isystem
/home/rick/src/subsurface/ndk-arm/arm-linux-androideabi/include/c++/4.9
-isystem
/home/rick/src/subsurface/ndk-arm/arm-linux-androideabi/include/c++/4.9/arm-linux-androideabi
-I/home/rick/src/subsurface/ndk-arm/sysroot/usr/include/libusb-1.0
-I/home/rick/src/subsurface/ndk-arm/sysroot/usr/include/libftdi1
-I/home/rick/src/subsurface/ndk-arm/sysroot/usr/include/libxml2
-I/home/rick/src/subsurface/ndk-arm/sysroot/usr/lib/libzip/include
-I/home/rick/src/subsurface/.
-I/home/rick/src/subsurface/subsurface-mobile-build-arm
-I/home/rick/src/subsurface/subsurface-mobile-build-arm/desktop-widgets
-isystem /home/rick/src/Qt/5.9/android_armv7/include -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtCore -isystem
/home/rick/src/Qt/5.9/android_armv7/./mkspecs/android-g++ -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtConcurrent -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtWidgets -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtGui -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtNetwork -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtSvg -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtPositioning -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtQuick -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtQml -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtQuickControls2 -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtAndroidExtras -isystem
/home/rick/src/Qt/5.9/android_armv7/include/QtBluetooth  -Wno-psabi
--sysroot=/home/rick/src/subsurface/ndk-arm/sysroot -funwind-tables
-finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a
-mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections
-Wa,--noexecstack  -std=c++11 -Wfloat-conversion -marm
-fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG
-fPIC   -fPIC -o CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o -c
/home/rick/src/subsurface/subsurface-mobile-build-arm/qrc_kirigami.cpp
    Successfully remade target file
`CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o'.
  Must remake target `libsubsurface-mobile.so'.
[ 77%] Linking CXX shared library libsubsurface-mobile.so
/usr/bin/cmake -E cmake_link_script
CMakeFiles/subsurface-mobile.dir/link.txt --verbose=1
/home/rick/src/subsurface/ndk-arm/bin/arm-linux-androideabi-gcc -fPIC
-Wno-psabi --sysroot=/home/rick/src/subsurface/ndk-arm/sysroot
-funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes
-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections
-ffunction-sections -Wa,--noexecstack  -std=c++11 -Wfloat-conversion -marm
-fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG
-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack
-Wl,-z,relro -Wl,-z,now  -shared -Wl,-soname,libsubsurface-mobile.so -o
libsubsurface-mobile.so
CMakeFiles/subsurface-mobile.dir/mobile-widgets/qmlmanager.cpp.o
CMakeFiles/subsurface-mobile.dir/mobile-widgets/qmlprofile.cpp.o
CMakeFiles/subsurface-mobile.dir/mobile-widgets/qml/kirigami/src/kirigamiplugin.cpp.o
CMakeFiles/subsurface-mobile.dir/mobile-widgets/qml/kirigami/src/settings.cpp.o
CMakeFiles/subsurface-mobile.dir/mobile-widgets/qml/kirigami/src/enums.cpp.o
CMakeFiles/subsurface-mobile.dir/subsurface-mobile-main.cpp.o
CMakeFiles/subsurface-mobile.dir/subsurface-mobile-helper.cpp.o
CMakeFiles/subsurface-mobile.dir/qrc_subsurface.cpp.o
CMakeFiles/subsurface-mobile.dir/qrc_mobile-resources.cpp.o
CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o
CMakeFiles/subsurface-mobile.dir/subsurface-mobile_autogen/moc_compilation.cpp.o
-L/home/rick/src/subsurface/ndk-arm/user/libs/armeabi-v7a
-L/home/rick/src/subsurface/ndk-arm/sysroot/usr/lib
profile-widget/libsubsurface_profile.a qt-models/libsubsurface_models.a
core/libsubsurface_corelib.a -lgit2 -ldivecomputer -lftdi1 -lusb-1.0
-lftdi1 -lusb-1.0 -lxml2 -lsqlite3 -lxslt -lxml2 -lz -lm -lxml2 -lzip -lz
-lusb-1.0 -llog ../ndk-arm/sysroot/usr/lib/libssl.a
../ndk-arm/sysroot/usr/lib/libcrypto.a -lusb-1.0
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Concurrent.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Svg.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Widgets.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Positioning.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5QuickControls2.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Quick.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Qml.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Network.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Gui.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5AndroidExtras.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Bluetooth.so
/home/rick/src/Qt/5.9/android_armv7/lib/libQt5Core.so -lftdi1 -lxml2
-lsqlite3 -lxslt -lz -lm -lzip -llog ../ndk-arm/sysroot/usr/lib/libssl.a
../ndk-arm/sysroot/usr/lib/libcrypto.a
-Wl,-rpath-link,/home/rick/src/subsurface/ndk-arm/sysroot/usr/lib
"/home/rick/src/subsurface/ndk-arm/arm-linux-androideabi/lib/armv7-a/libstdc++.a"
"/home/rick/src/subsurface/ndk-arm/arm-linux-androideabi/lib/armv7-a/libsupc++.a"
-lm
/home/rick/src/subsurface/libgit2-0.24.1/src/cache.c:117: error: undefined
reference to 'rand'
collect2: error: ld returned 1 exit status
make[2]: *** [libsubsurface-mobile.so] Error 1
make[2]: Leaving directory
`/home/rick/src/subsurface/subsurface-mobile-build-arm'
make[1]: *** [CMakeFiles/subsurface-mobile.dir/all] Error 2
make[1]: Leaving directory
`/home/rick/src/subsurface/subsurface-mobile-build-arm'
make: *** [all] Error 2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20170619/a5515e61/attachment-0001.html>


More information about the subsurface mailing list