设为首页 加入收藏

TOP

几个Ubuntu 64上编译32位程序碰到的问题
2014-11-24 02:04:18 来源: 作者: 【 】 浏览:1
Tags:几个 Ubuntu 编译 32位 程序 碰到 问题

1. Vmware模拟64位系统的问题。在默认情况下,即使cpu支持64位,也会把intel的vt(visualization technology)关闭,而这是Vmware模拟64位系统必须的,所以要在bios里面把它打开。我一开始就搜索到了这个答案,但是重启几次之后还不行。又搜了一遍,才发现很多人其实都藏了一半没说清楚,这个需要冷启动,也就是关机一次再打开才生效。


2. gcc编译参数问题1. 头次编译,makefile完全没改,那么得到的错误是:


CPU you selected does not support x86-64 instruction set


cc -I/computer/home/me/fftw-2.1.3/fftw -I/computer/home/me/fftw-2.1.3/rfftw -ansi -O6 -fomit-frame-pointer -Wall -W -Wcast-qual -Wpointer-arith -Wcast-align -pedantic -fno-schedule-insns -fschedule-insns2 -malign-double -fstrict-aliasing -mcpu=pentiumpro -c ftdock.c
ftdock.c:1: error: CPU you selected does not support x86-64 instruction set
ftdock.c:1: error: -malign-double makes no sense in the 64bit mode


天地良心,这不是把64位支持打开了吗?后来才知道,需要修改makefile面-march的值,比如这里我们需要改成-march=x86-64,于是就可以了。有的文档说要改成m64,这个应该是跟具体的系统有关吧。反正Ubuntu 9.0.4上这么改就没问题了。


3. gcc编译参数问题2. 接下来的编译,报了个更诡异的错误:


"relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object;"


google了一下,还挺常见的。这需要在gcc 后面加上参数-fPIC,-fPIC参数声明链接库的代码段是可以共享的,但我不知道没有它带来的错误是为什么。姑且记下,以后备用。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux-2.6.26内核中ARM中断实现详.. 下一篇Flex如何迎接HTML5的挑战

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: