具有依赖项的交叉编译C-Application(Raspberry)

时间:2020-05-17 09:59:16

标签: cross-compiling

此刻,我尝试为Raspberry交叉编译一个应用程序,该程序具有czmq库作为依赖项。

我的方法:

  1. 在Raspberry pi(https://github.com/zeromq/czmq)上安装czmq
  2. 重新同步我的本地sysroot文件夹(在我的主机上)(/usr/; /lib/
  3. 启动我的交叉编译器:
arm-linux-gnueabihf-gcc --sysroot=/home/alexander/tmp/CMake_Raspi/rootfs -g 
-Wall -fmessage-length=0 -ggdb -Iinclude src/functions.c src/Trainstation_Sequenzer.c 
-o bin/trainstationsequencer -lczmq -lzmq -pthread
  1. 但是有很多错误
/usr/bin/../lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/bin/ld: warning: libuuid.so.1, needed by /home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libczmq.so, not found (try using -rpath or -rpath-link)
/usr/bin/../lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/bin/ld: warning: librt.so.1, needed by /home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5, not found (try using -rpath or -rpath-link)
/usr/bin/../lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/bin/ld: warning: libstdc++.so.6, needed by /home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5, not found (try using -rpath or -rpath-link)
/usr/bin/../lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/bin/ld: warning: libm.so.6, needed by /home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5, not found (try using -rpath or -rpath-link)
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__gxx_personality_v0@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__throw_logic_error(char const*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::locale::~locale()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_end_catch@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for __cxxabiv1::__si_class_type_info@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append(char const*, unsigned int)@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::uncaught_exception()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_pure_virtual@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: 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&)@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `clock_gettime@GLIBC_2.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for __cxxabiv1::__class_type_info@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `typeinfo for std::bad_alloc@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_rethrow@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::locale::locale()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::chrono::_V2::system_clock::now()@GLIBCXX_3.4.19'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator new[](unsigned int, std::nothrow_t const&)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)@GLIBCXX_3.4.9'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base const*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::ios_base::~ios_base()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::condition_variable::notify_all()@GLIBCXX_3.4.11'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `VTT for std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(unsigned int, unsigned int, char const*) const@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for std::basic_ios<char, std::char_traits<char> >@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator delete[](void*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)@GLIBCXX_3.4.9'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator new(unsigned int, std::nothrow_t const&)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__throw_bad_alloc()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned int&, unsigned int)@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator new(unsigned int)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::condition_variable::condition_variable()@GLIBCXX_3.4.11'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_end_cleanup@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libczmq.so: undefined reference to `uuid_generate@UUID_1.0'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::nothrow@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator delete(void*, unsigned int)@CXXABI_1.3.9'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned int, unsigned int) const@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::type_info::operator==(std::type_info const&) const@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::rfind(char, unsigned int) const@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator delete(void*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::ostream::operator<<(int)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `VTT for std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.11'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `typeinfo for __cxxabiv1::__forced_unwind@CXXABI_1.3.2'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for std::basic_streambuf<char, std::char_traits<char> >@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `__cxa_begin_catch@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char, unsigned int) const@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::condition_variable::~condition_variable()@GLIBCXX_3.4.11'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::ios_base::ios_base()@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info@CXXABI_1.3'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__throw_length_error(char const*)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::__throw_system_error(int)@GLIBCXX_3.4.11'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `operator delete(void*, std::nothrow_t const&)@GLIBCXX_3.4'
/home/alexander/tmp/CMake_Raspi/rootfs/usr/local/lib/libzmq.so.5: undefined reference to `std::_Rb_tree_decrement(std::_Rb_tree_node_base*)@GLIBCXX_3.4'
collect2: error: ld returned 1 exit status
make: *** [Makefile:31: bin/trainstationsequencer] Fehler 1
  1. 如果我使用buildroot在主机上启动编译,则没有错误,并且该应用程序在我的Raspberry上运行
  2. 如果我在主机上开始编译(仅使用gcc =>无交叉编译),则没有错误,并且该应用程序在桌面PC上运行
  3. 如果我在Raspberry(使用gcc)上开始编译,则没有错误,并且应用程序在Raspberry上运行

  4. 我的项目结构:

.
├── azure-pipelines.yml
├── bin
├── include
│   └── global.h
├── Makefile
└── src
    ├── functions.c
    └── Trainstation_Sequenzer.c

你知道我的错是什么吗?

0 个答案:

没有答案