I’m trying to compile OF 0.9.8 on the Orbbec Persee (a Cortex A17 ARMv7 board) running Ubuntu 14.04.
OF and the emptyExample app seem to compile ok, but it fails when linking. It looks like there’s some incompatibility with libraries I think – perhaps GCC versions or something like that. GCC 4.8 is the installed version.
I get output like this:
$ make
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
Compiling OF library for Release
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
make[1]: Entering directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/project'
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
Done!
make[1]: Leaving directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/project'
Compiling emptyExample for Release
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
make[1]: Entering directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/examples/empty/emptyExample'
Linking bin/emptyExample for linuxarmv7l
g++ -o bin/emptyExample obj/linuxarmv7l/Release/src/main.o obj/linuxarmv7l/Release/src/ofApp.o /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/glfw/lib/linuxarmv7l/libglfw3.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/kiss/lib/linuxarmv7l/libkiss.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/tess2/lib/linuxarmv7l/libtess2.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoCrypto.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoUtil.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoJSON.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoXML.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoFoundation.a -lz -lgstapp-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -ludev -lfontconfig -lfreetype -lsndfile -lopenal -lssl -lcrypto -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 -lGLESv1_CM -lGLESv2 -lEGL -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -ldl -lpthread -lfreeimage -lboost_filesystem -lboost_system -lrtaudio
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofImage.o): In function `bool loadImage<unsigned char>(ofPixels_<unsigned char>&, std::string)':
ofImage.cpp:(.text+0x1a4e): undefined reference to `Poco::URI::URI(std::string const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofImage.o): In function `bool loadImage<unsigned short>(ofPixels_<unsigned short>&, std::string)':
ofImage.cpp:(.text+0x1efa): undefined reference to `Poco::URI::URI(std::string const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a(ofImage.o): In function `bool loadImage<float>(ofPixels_<float>&, std::string)':
ofImage.cpp:(.text+0x22d6): undefined reference to `Poco::URI::URI(std::string const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(InvalidCertificateHandler.o): In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) [clone .isra.20]':
InvalidCertificateHandler.cpp:(.text.unlikely+0x40): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(PrivateKeyPassphraseHandler.o): In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) [clone .isra.20]':
PrivateKeyPassphraseHandler.cpp:(.text.unlikely+0x40): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(Context.o): In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) [clone .isra.18]':
Context.cpp:(.text+0x110): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(Context.o): In function `Poco::Net::Context::Context(Poco::Net::Context::Usage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Poco::Net::Context::VerificationMode, int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Context.cpp:(.text+0x18f4): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Context.cpp:(.text+0x1900): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Context.cpp:(.text+0x190c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Context.cpp:(.text+0x1928): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(Context.o): In function `Poco::Net::Context::Context(Poco::Net::Context::Usage, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Poco::Net::Context::VerificationMode, int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Context.cpp:(.text+0x1a44): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(Context.o):Context.cpp:(.text+0x1a5c): more undefined references to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a(SecureStreamSocket.o): In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) [clone .isra.17] [clone .constprop.18]':
SecureStreamSocket.cpp:(.text.unlikely+0x24): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)'
…and so on. I saw this issue https://github.com/openframeworks/openFrameworks/issues/5363 which looked similar, so I tried running apothecary update poco
which ran without issue. When trying to compile again, I get…
$ make
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
Compiling OF library for Release
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
make[1]: Entering directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/project'
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
Done!
make[1]: Leaving directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/project'
Compiling emptyExample for Release
HOST_OS=Linux
checking pkg-config libraries: cairo zlib gstreamer-app-1.0 gstreamer-1.0 gstreamer-video-1.0 gstreamer-base-1.0 libudev freetype2 fontconfig sndfile openal openssl gtk+-3.0 glesv1_cm glesv2 egl
make[1]: Entering directory `/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/examples/empty/emptyExample'
Linking bin/emptyExample for linuxarmv7l
g++ -o bin/emptyExample obj/linuxarmv7l/Release/src/main.o obj/linuxarmv7l/Release/src/ofApp.o /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/openFrameworksCompiled/lib/linuxarmv7l/libopenFrameworks.a -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/glfw/lib/linuxarmv7l/libglfw3.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/kiss/lib/linuxarmv7l/libkiss.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/tess2/lib/linuxarmv7l/libtess2.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNetSSL.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoCrypto.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoUtil.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoJSON.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoXML.a /home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoFoundation.a -lz -lgstapp-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -ludev -lfontconfig -lfreetype -lsndfile -lopenal -lssl -lcrypto -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 -lGLESv1_CM -lGLESv2 -lEGL -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -ldl -lpthread -lfreeimage -lboost_filesystem -lboost_system -lrtaudio
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::~MessageHeader()':
MessageHeader.cpp:(.text+0x8): undefined reference to `Poco::Net::NameValueCollection::~NameValueCollection()'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::~MessageHeader()':
MessageHeader.cpp:(.text+0x1c): undefined reference to `Poco::Net::NameValueCollection::~NameValueCollection()'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::write(std::ostream&) const':
MessageHeader.cpp:(.text+0x36): undefined reference to `Poco::Net::NameValueCollection::begin() const'
MessageHeader.cpp:(.text+0x76): undefined reference to `Poco::Net::NameValueCollection::end() const'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::MessageHeader()':
MessageHeader.cpp:(.text+0x88): undefined reference to `Poco::Net::NameValueCollection::NameValueCollection()'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::MessageHeader(Poco::Net::MessageHeader const&)':
MessageHeader.cpp:(.text+0xa0): undefined reference to `Poco::Net::NameValueCollection::NameValueCollection(Poco::Net::NameValueCollection const&)'
/home/orbbec/Downloads/of_v0.9.8_linuxarmv7l_release/libs/poco/lib/linuxarmv7l/libPocoNet.a(MessageHeader.o): In function `Poco::Net::MessageHeader::operator=(Poco::Net::MessageHeader const&)':
…and so on.
I also tried compiling the ARMv6 version, but I get errors about an unsupported platform and that I possibly downloaded the wrong version. I know that rPi3 can run the ARMv6 version despite it being an ARMv7 board, so I thought could work here, but am not sure what needs to be changed in the Makefile or elsewhere.
Any thoughts on where to go from here?