DavidEGrayson / minimu9-ahrs

Program for reading data from the Pololu MinIMU-9 over I²C. Works on the Raspberry Pi and other embedded ARM Linux boards.
Other
167 stars 68 forks source link

Unable to compile on Ubuntu #10

Closed tech2077 closed 10 years ago

tech2077 commented 10 years ago

I attempted to compile on ubuntu after install the necessary libraries as specified, but it results in a linking error:

ubuntu@arm:~/minimu9-ahrs$ make
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP vector.h -o vector.h.gch
In file included from ./Eigen/Core:248:0,
                 from vector.h:4:
./Eigen/src/Core/util/Memory.h: In function ‘Index Eigen::internal::first_aligned(const Scalar*, Index)’:
./Eigen/src/Core/util/Memory.h:449:48: warning: typedef ‘Packet’ locally defined but not used [-Wunused-local-typedefs]
   typedef typename packet_traits<Scalar>::type Packet;
                                                ^
In file included from ./Eigen/Core:324:0,
                 from vector.h:4:
./Eigen/src/Core/products/SelfadjointMatrixVector.h: In static member function ‘static void Eigen::internal::selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, Version>::run(Index, const Scalar*, Index, const Scalar*, Index, Scalar*, Scalar)’:
./Eigen/src/Core/products/SelfadjointMatrixVector.h:38:44: warning: typedef ‘RealScalar’ locally defined but not used [-Wunused-local-typedefs]
   typedef typename NumTraits<Scalar>::Real RealScalar;
                                            ^
In file included from ./Eigen/QR:26:0,
                 from ./Eigen/SVD:4,
                 from ./Eigen/Geometry:8,
                 from vector.h:5:
./Eigen/src/QR/HouseholderQR.h: In function ‘void Eigen::internal::householder_qr_inplace_blocked(MatrixQR&, HCoeffs&, typename MatrixQR::Index, typename MatrixQR::Scalar*)’:
./Eigen/src/QR/HouseholderQR.h:235:41: warning: typedef ‘RealScalar’ locally defined but not used [-Wunused-local-typedefs]
   typedef typename MatrixQR::RealScalar RealScalar;
                                         ^
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP  -c -o minimu9-ahrs.o minimu9-ahrs.cpp
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP  -c -o I2CBus.o I2CBus.cpp
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP  -c -o L3G.o L3G.cpp
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP  -c -o LSM303.o LSM303.cpp
g++  -I. -Wall --std=c++0x -O3 -Wno-psabi -MD -MP  -c -o MinIMU9.o MinIMU9.cpp
g++ -lboost_program_options  minimu9-ahrs.o I2CBus.o L3G.o LSM303.o MinIMU9.o   -o minimu9-ahrs
minimu9-ahrs.o: In function `boost::program_options::typed_value<std::string, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const':
minimu9-ahrs.cpp:(.text._ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueISscE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0x1a): undefined reference to `boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)'
minimu9-ahrs.o: In function `boost::program_options::typed_value<std::string, char>::name() const':
minimu9-ahrs.cpp:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0xf6): undefined reference to `boost::program_options::arg'
minimu9-ahrs.cpp:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0xfa): undefined reference to `boost::program_options::arg'
minimu9-ahrs.cpp:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x18e): undefined reference to `boost::program_options::arg'
minimu9-ahrs.cpp:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x194): undefined reference to `boost::program_options::arg'
minimu9-ahrs.o: In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)':
minimu9-ahrs.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x12c): undefined reference to `boost::program_options::to_internal(std::string const&)'
minimu9-ahrs.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x150): undefined reference to `boost::program_options::detail::cmdline::cmdline(std::vector<std::string, std::allocator<std::string> > const&)'
minimu9-ahrs.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x304): undefined reference to `boost::program_options::to_internal(std::string const&)'
minimu9-ahrs.o: In function `boost::program_options::basic_command_line_parser<char>::run()':
minimu9-ahrs.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x16): undefined reference to `boost::program_options::detail::cmdline::run()'
minimu9-ahrs.o: In function `boost::program_options::variables_map::~variables_map()':
minimu9-ahrs.cpp:(.text._ZN5boost15program_options13variables_mapD2Ev[_ZN5boost15program_options13variables_mapD5Ev]+0x2c): undefined reference to `vtable for boost::program_options::variables_map'
minimu9-ahrs.o: In function `main':
minimu9-ahrs.cpp:(.text.startup+0x22): undefined reference to `boost::program_options::options_description::m_default_line_length'
minimu9-ahrs.cpp:(.text.startup+0x26): undefined reference to `boost::program_options::options_description::m_default_line_length'
minimu9-ahrs.cpp:(.text.startup+0x34): undefined reference to `boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)'
minimu9-ahrs.cpp:(.text.startup+0x46): undefined reference to `boost::program_options::options_description::add_options()'
minimu9-ahrs.cpp:(.text.startup+0x5e): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'
minimu9-ahrs.cpp:(.text.startup+0x72): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'
minimu9-ahrs.cpp:(.text.startup+0xac): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)'
minimu9-ahrs.cpp:(.text.startup+0xe6): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)'
minimu9-ahrs.cpp:(.text.startup+0x120): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)'
minimu9-ahrs.cpp:(.text.startup+0x144): undefined reference to `boost::program_options::variables_map::variables_map()'
minimu9-ahrs.cpp:(.text.startup+0x156): undefined reference to `boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)'
minimu9-ahrs.cpp:(.text.startup+0x16a): undefined reference to `boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)'
minimu9-ahrs.cpp:(.text.startup+0x17c): undefined reference to `boost::program_options::notify(boost::program_options::variables_map&)'
minimu9-ahrs.cpp:(.text.startup+0x1b2): undefined reference to `boost::program_options::operator<<(std::ostream&, boost::program_options::options_description const&)'
minimu9-ahrs.cpp:(.text.startup+0x552): undefined reference to `boost::program_options::multiple_occurrences::get_option_name() const'
minimu9-ahrs.o: In function `boost::program_options::variables_map::~variables_map()':
minimu9-ahrs.cpp:(.text._ZN5boost15program_options13variables_mapD0Ev[_ZN5boost15program_options13variables_mapD0Ev]+0x34): undefined reference to `vtable for boost::program_options::variables_map'
minimu9-ahrs.o:(.rodata._ZTIN5boost15program_options11typed_valueISscEE[_ZTIN5boost15program_options11typed_valueISscEE]+0x10): undefined reference to `typeinfo for boost::program_options::value_semantic_codecvt_helper<char>'
minimu9-ahrs.o:(.rodata._ZTVN5boost15program_options11typed_valueISscEE[_ZTVN5boost15program_options11typed_valueISscEE]+0x1c): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const'
collect2: error: ld returned 1 exit status
make: *** [minimu9-ahrs] Error 1
guicn7 commented 10 years ago

I am stuck with the same problem. Did you get any success with compiling?

DavidEGrayson commented 10 years ago

I had a similar issue when I tried to compile on Ubuntu 12.04 (which is useful for quickly making sure the thing can compile before trying it on a Raspberry Pi). Ubuntu 12.04's libboost-program-options-dev package is pretty old so there might be old bugs in it; I suspect that installing the latest version of the library from source would fix the problem.

Even if you can't fix the problem, compiling on Ubuntu is still useful because it makes sure that everything up to the linking step works.