当前位置: 技术问答>linux和unix
多版本gcc问题
来源: 互联网 发布时间:2016-11-20
本文导语: 由于编译需要 我在电脑上按了两个版本的gcc 自带版本 gcc -4.5 安装了一个 gcc-3.4 并按照网上的做法 将gcc3.4链接为 gcc34! 我也试着用gcc34 编译过helloworld!成功通过! 但 放到我的makefile里 进行编译,就...
由于编译需要 我在电脑上按了两个版本的gcc
自带版本 gcc -4.5 安装了一个 gcc-3.4
并按照网上的做法 将gcc3.4链接为 gcc34!
我也试着用gcc34 编译过helloworld!成功通过!
但 放到我的makefile里 进行编译,就会报错!
error:
gcc34 -Wall -g -lpthread -lstdc++ -lm -I/usr/local/Aria/include -L/usr/local/Aria/lib -lAria -lArNetworking -lArNetworkingJava -o Goto gotoActionExample.cpp
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_transfer(std::_List_node_base*, std::_List_node_base*)@GLIBCXX_3.4.14'
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_unhook()@GLIBCXX_3.4.14'
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)@GLIBCXX_3.4.14'
collect2: ld returned 1 exit status
makefile:
1 SOURCE=gotoActionExample.cpp
2 OBJECTS=$(SOURCE:%.c=%.o)
3 TARGET = Goto
4 OPTION=-Wall -g -lpthread -lstdc++ -lm
5 INCLUDEPATH= -I/usr/local/Aria/include
6 LIBPATH=-L/usr/local/Aria/lib
7 LIBS=-lAria -lArNetworking -lArNetworkingJava
8 CC=gcc34
9
10 $(TARGET):$(OBJECTS)
11 $(CC) $(OPTION) $(INCLUDEPATH) $(LIBPATH) $(LIBS) -o $(TARGET) $(OBJECTS )
12 clean:
13 -rm -f $(TARGET) *.o*~
如果 将gcc34 换成gcc 是不是就是用默认的gcc4.5了 !? 这样是能正常编译通过的!但目标服务器需要gcc3.4版本编译的!所以 我希望gcc34也能make通过 ,课老师报错 !有人知道怎么修改吗?!帮帮忙!
自带版本 gcc -4.5 安装了一个 gcc-3.4
并按照网上的做法 将gcc3.4链接为 gcc34!
我也试着用gcc34 编译过helloworld!成功通过!
但 放到我的makefile里 进行编译,就会报错!
error:
gcc34 -Wall -g -lpthread -lstdc++ -lm -I/usr/local/Aria/include -L/usr/local/Aria/lib -lAria -lArNetworking -lArNetworkingJava -o Goto gotoActionExample.cpp
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_transfer(std::_List_node_base*, std::_List_node_base*)@GLIBCXX_3.4.14'
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_unhook()@GLIBCXX_3.4.14'
/usr/local/Aria/lib/libAria.so: undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)@GLIBCXX_3.4.14'
collect2: ld returned 1 exit status
makefile:
1 SOURCE=gotoActionExample.cpp
2 OBJECTS=$(SOURCE:%.c=%.o)
3 TARGET = Goto
4 OPTION=-Wall -g -lpthread -lstdc++ -lm
5 INCLUDEPATH= -I/usr/local/Aria/include
6 LIBPATH=-L/usr/local/Aria/lib
7 LIBS=-lAria -lArNetworking -lArNetworkingJava
8 CC=gcc34
9
10 $(TARGET):$(OBJECTS)
11 $(CC) $(OPTION) $(INCLUDEPATH) $(LIBPATH) $(LIBS) -o $(TARGET) $(OBJECTS )
12 clean:
13 -rm -f $(TARGET) *.o*~
如果 将gcc34 换成gcc 是不是就是用默认的gcc4.5了 !? 这样是能正常编译通过的!但目标服务器需要gcc3.4版本编译的!所以 我希望gcc34也能make通过 ,课老师报错 !有人知道怎么修改吗?!帮帮忙!
|
交叉编译需要构建不同的环境,就是工具链,如果gcc和binutils、glibc不能匹配,编译可能就有问题,出来的东西在运行时也会有错误
可以用一些交叉编译工具来构建,比如buildroot等,将编译好的工具链做链接或者变量,然后进行编译就可以了
可以用一些交叉编译工具来构建,比如buildroot等,将编译好的工具链做链接或者变量,然后进行编译就可以了