【问题标题】:Compiling Module on Nao robot using custom makefile使用自定义 makefile 在 Nao 机器人上编译模块
【发布时间】:2016-05-24 18:05:47
【问题描述】:

我正在为我的 Alderbaran Nao V5 机器人编写一个模块。 Alderbaran 建议使用 qibuild 编译模块,我能够成功地这样做,但现在我正在尝试迁移到编写自己的 makefile 并使用 g++。

我遇到以下错误:

/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/../../../../lib/crt1.o: In function 

`_start':
(.text+0x18): undefined reference to `main'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqimessaging.so: undefined reference to `std::__detail::_List_node_base::swap(std::__detail::_List_node_base&, std::__detail::_List_node_base&)@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqi.so: undefined reference to `std::invalid_argument::~invalid_argument()@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqitype.so: undefined reference to `std::out_of_range::~out_of_range()@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqitype.so: undefined reference to `std::__detail::_List_node_base::_M_transfer(std::__detail::_List_node_base*, std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqimessaging.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqimessaging.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/home/nao/naoqi-sdk-2.1.3.3-linux32/lib/libqi.so: undefined reference to `posix_spawnp@GLIBC_2.15'
collect2: ld returned 1 exit status
make: *** [shm.so] Error 1

这是我正在使用的makefile:

#Variables
CXXFLAGS=-Wall -g
CXX = g++
NaoQi_INC = /home/nao/naoqi-sdk-2.1.3.3-linux32/include
NaoQi_LIB = -L/home/nao/naoqi-sdk-2.1.3.3-linux32/lib -lalcommon -lalerror -lalproxies -lalvalue -lqimessaging -lqitype -lqi

#Object Targets
main.o: main.cpp shm.h
        $(CXX) $(CXXFLAGS) -c -I$(NaoQi_INC)  main.cpp

shm.o: shm.cpp shm.h $(NaoQi_INC)/alcommon/alproxy.h $(NaoQi_INC)/alcommon/albroker.h $(NaoQi_INC)/alcommon/almodule.h
        $(CXX) $(CXXFLAGS) -c -I$(NaoQi_INC) shm.cpp

#Library Targets
shm.so: main.o shm.o
        $(CXX) $(CXXFLAGS) -o shm.so main.o shm.o -L/usr/local/lib -lm  $(NaoQi_LIB)

clean:
        rm -f *o main
        rm -f *o shm

all: shm.o main.o shm.so

我注意到我正在编译的 gentoo 操作系统最高支持 GLIBCXX_3.4.14,但没有 GLIBCXX_3.4.15。我该如何解决这个问题?为什么我使用 qibuild 构建模块时不会出现此问题?

【问题讨论】:

    标签: c++ makefile glibc nao-robot


    【解决方案1】:

    有趣的是,问题在于我的 .so 链接命令缺少 -shared 标志。但是,不知道为什么会出现我遇到的所有错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多