<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 19 June 2017 at 08:06, Lubomir I. Ivanov <span dir="ltr"><<a href="mailto:neolit123@gmail.com" target="_blank">neolit123@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On 17 June 2017 at 06:54, Rick Walsh <<a href="mailto:rickmwalsh@gmail.com">rickmwalsh@gmail.com</a>> wrote:<br>
> Hi,<br>
> It turns out I might actually have a little bit of time to dedicate to<br>
> Subsurface over the next couple of weeks, and I thought I'd start by<br>
> reviving my Android build chain.  Running packaging/android/build.sh, I get<br>
> stuck with this error.  Does anyone smarter than me know what's going on?<br>
> I'm on Fedora 25, with android-ndk-r13b and Qt5.9.<br>
><br>
> $ sh packaging/android/build.sh<br>
<br>
</span><snip><br>
<span class="gmail-"><br>
> /home/rick/src/subsurface/<wbr>libgit2-0.24.1/src/cache.c:<wbr>117: error: undefined<br>
> reference to 'rand'<br>
<br>
</span>sounds like it isn't linking against the platform libc.a. i doubt that<br>
rand() is missing in the standard library implementation...maybe<br>
wrapping another function but not missing.<br>
<br>
you can try:<br>
$ build.sh VERBOSE=1<br>
<br>
to see what the linker is doing.<br>
<br>
i haven't tried the Subsurface Android build script, but i get<br>
something like the bellow from the "ndk-build" script when building a<br>
generic test library:<br>
<br>
c:/bin/android_ndk/build//../<wbr>toolchains/llvm/prebuilt/<wbr>windows-x86_64/bin/clang++<br>
.exe -Wl,-soname,libtesttest.so -shared<br>
--sysroot=c:/bin/android_ndk/<wbr>build//../pl<br>
atforms/android-19/arch-arm testtest.o -lgcc  -gcc-toolchain c:/bin/<br>
android_ndk/build//../<wbr>toolchains/arm-linux-<wbr>androideabi-4.9/prebuilt/<wbr>windows-x86_<br>
64 -no-canonical-prefixes -target armv7-none-linux-androideabi -Wl,--fix-cortex-<br>
a8  -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now<br>
 -Wl,--warn-shared-textrel -Wl,--fatal-warnings    -lc -lm -o libtesttest.so<br>
<br>
it tells me that it sets the platform location correctly (--sysroot)<br>
and it links against -lc (rand()) should be part libc.a and libc.so).<br>
it also sets the toolchain correctly (-gcc-toolchain) and -lgcc is<br>
located in there.<br>
<br></blockquote><div>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.<br><br>[ 76%] Building CXX object CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o<br>/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<br>    Successfully remade target file `CMakeFiles/subsurface-mobile.dir/qrc_kirigami.cpp.o'.<br>  Must remake target `libsubsurface-mobile.so'.<br>[ 77%] Linking CXX shared library libsubsurface-mobile.so<br>/usr/bin/cmake -E cmake_link_script CMakeFiles/subsurface-mobile.dir/link.txt --verbose=1<br>/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<br>/home/rick/src/subsurface/libgit2-0.24.1/src/cache.c:117: error: undefined reference to 'rand'<br>collect2: error: ld returned 1 exit status<br>make[2]: *** [libsubsurface-mobile.so] Error 1<br>make[2]: Leaving directory `/home/rick/src/subsurface/subsurface-mobile-build-arm'<br>make[1]: *** [CMakeFiles/subsurface-mobile.dir/all] Error 2<br>make[1]: Leaving directory `/home/rick/src/subsurface/subsurface-mobile-build-arm'<br>make: *** [all] Error 2<br><br></div></div></div></div>