openframeworks / openframeworks/openFrameworks

Errors linking on Orbbec Persee ARMv7 (compile is ok)

Open
#5,402 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature linuxarm
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.