2016-05-24 61 views
4

我正在爲Alderbaran Nao V5機器人編程模塊。 Alderbaran建議使用qibuild來編譯一個模塊,並且我能夠成功地做到這一點,但現在我正在嘗試遷移編寫自己的makefile並使用g ++。使用自定義生成文件在Nao機器人上編譯模塊

我遇到了以下錯誤:

/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 `[email protected]_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構建模塊時,這個問題不會出現?

回答

0

有趣的是,問題是我的.so鏈接命令丟失了-shared標誌。但是,不知道爲什麼這給了我遇到的所有錯誤。

相關問題