openframeworks / openframeworks/openFrameworks
Errors linking on Orbbec Persee ARMv7 (compile is ok)
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 2.6k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 9
Description
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. 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?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure in examples/empty/emptyExample using the linuxarmv7l build and inspect the link step and libs/openFrameworksCompiled/project. Compare the Poco archives under libs/poco/lib/linuxarmv7l with the compiler and linker output, including the result of apothecary update poco. Done means the emptyExample application links successfully on the Orbbec Persee ARMv7 target.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux, ubuntu
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100