如何在linux 32位机器编译64位程序

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。

编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误

[plain] view plain copy

 

  1. In file included from /usr/include/features.h:378,  
  2.                  from /usr/include/assert.h:37,  
  3.                  from ../../../include/tinyxml/tinystr.h:42,  
  4.                  from ../../../src/tinyxml/tinystr.cpp:32:  
  5. /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录  

这时候需要安装 gcc所有支持文件 sudo apt-get install gcc-multilib

[plain] view plain copy

 

  1. 将会安装下列额外的软件包:  
  2.   cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1  
  3.   libstdc++6 libstdc++6-4.4-dev  
  4. 建议安装的软件包:  
  5.   gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg  
  6.   libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc  
  7. 下列【新】软件包将被安装:  
  8.   gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64  
  9. 下列软件包将被升级:  
  10.   cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libgcc1 libgomp1 libstdc++6 libstdc++6-4.4-dev  
时间: 2024-08-02 12:40:52

如何在linux 32位机器编译64位程序的相关文章

c++-在VS.net2003中用C++写的项目,从32位迁移到64位机器上后遇到引用第三方库的问题

问题描述 在VS.net2003中用C++写的项目,从32位迁移到64位机器上后遇到引用第三方库的问题 在VS.net2003中用C++写的项目,从32位迁移到64位机器上后,原来引用的SDK/DXSDK第三方库中头文件包含VS.net2003中的Winsock2.h文件的路径错误,应该去"C:/ProgramFiles (x86)/""下去寻呼,但是他还去""C:/ProgramFiles/""路径去寻找,这个是什么造成的?怎么解决啊

32位程序对64位进程的远程注入实现

本文讲的是32位程序对64位进程的远程注入实现, 0x00 前言 要对指定进程进行远程注入,通常使用Windows提供的API CreateRemoteThread创建一个远程线程,进而注入dll或是执行shellcode. 在64位系统下,该方法需要特别注意,注入的目标进程要同程序的结构保持一致,即32位程序只能对32进程作注入,64位程序只能对64位进程作注入,32位程序对64位程序进行注入时会失败(32位和64位的结构不同). 然而,在某些特殊的环境下,无法提前预知目标进程的结构,准备两个

iOS上应用如何兼容32位系统和64位系统

      在苹果推出iPhone5S时,64位的应用就走到了眼前.当时就看见苹果官方资料宣布iOS7.x的SDK支持了64位的应用,而且内置的应用都已经是64位.       我记得自己刚刚接触电脑时还有16位的系统,指针的寻址范围还是16位的.当年用TurboC时,还要根据应用的大小选择是tiny模式还是其他.后来很长一段时间使用32位的模型编程,4G是牢牢记住的一个边界条件.而现在,64位走到了眼前.       就如同16位转向32位一样,硬件肯定是最先推出的,SDK也会跟进,然后各种第

iOS 7: 如何为iPhone 5S编译64位应用

大家都比较关心我们的应用如何迁移到 64位的系统上来,以充分发挥A7的能力.其实这些问题都可以在苹果的官方文档<64-Bit transition Guide for http://www.aliyun.com/zixun/aggregation/16450.html">Cocoa Touch>中找到答案.为了方便大家,我将<64-Bit transition Guide for Cocoa Touch>中的一些重点整理了一下,希望可以为大家节约一些详细阅读文档的时

关于32位系统和64位系统运行asp。net程序的兼容性问题。

问题描述 我现在做了一个asp.net网站,用的C#.vs2008开发环境,操作系统是windowsserver2008x32.数据库:oracle10g.运行一切正常.现在客户换了一台服务器,装windowsserver2008X64版本.不知道我的这个网站部署到64位的系统是有问题没有.如果有兼容问题,该怎么解决. 解决方案 解决方案二:如果程序是纯.NET写的,完全没有问题.如果程序使用了32bit的dll或者activex组件,那么需要把程序集编译成32bit.解决方案三:网页中有一个f

Win7 32位系统和64位系统有什么区别

  首先,相信选择64位Windows7的网友中很有大比例是内存大于或等于4GB的.在32位Windows7下,可能会显示内存可使用3.25G,这让很多网友感到不安.没错,可寻址的内存空间确实是32位Windows7和64位Windows7最为显著的特点. 32位的CPU(准确的说是运行在32位模式下的CPU)只能寻址最大4GB的内存,受制于此,32位的操作系统也只能识别最大4GB的内存,由于在系统中,除了内存之外,还有很多存储设备,因此,真正可以利用的内存空间肯定小于4GB,也就是我们看到的系

32位系统和64位系统有什么含义

电脑的发展史是从以前的8位.16位发展到先的32位和64位,位数是用来衡量计算机性能的重要标准之一.位数在很大程度上决定着计算机的内存最大容量.文件的最大长度.数据在计算机内部的传输速度.处理速度和精度等性能指标. 32位系统是指在操作系统针对32位的cpu设计,就是32处理器一次性能处理32位也就是4字节的数据,而64系统是操作系统针对64位的cpu设计,就是一次性能处理64位也就是8位字节,在这里在工作频率相同的前提下,64位的cpu处理速度就比32位的高一倍.当然这只是32位系统和64位系

电脑32位怎么换64位 32位win7系统怎么更换成64位

  32位win7系统怎么更换成64位:最近上网看到一些评论,问电脑32位怎么换64位,当然,对于电脑比较熟悉的朋友会觉得这个问题有些奇怪,但是对于很多初学者来说这确实是一个值得回答的问题,比如一些用户问到:电脑里安装的是32位旗舰版win7,家里的电脑内存是4G,据说换成64位能提高性能,问怎么更换? 其实32位换成64位不只是所谓的数字的改变,并不是把系统里面的32改成64就可以了.32位和64位系统的区别不仅仅是数字的变化,而是内核的区别. 因此,现在大家应该能明白,32位win7系统是无

android ndk-Android NDK 编译64位so

问题描述 Android NDK 编译64位so RT 请问如何编译64位的so文件呢?请详细点,菜鸟并不懂,谢谢 解决方案 APP_ABI := arm64-v8a http://developer.android.com/ndk/guides/ndk-build.html