今天做实验,64位ubuntu,sizeof指针得到8

想编译成32位程序

百度

需要安装32位库,已经安装了 libc6 libc6-dev

报错fatal error: sys/cdefs.h: No such file or directory

需要

sudo apt-get install libc6-dev-i386

然后再编译

ning@ubuntu:~/Documents$ gcc sizeof.c -m32
sizeof.c: In function ‘main’:
sizeof.c:10:11: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘unsigned int’ [-Wformat=]printf("sizeof(p)=%ld\n",sizeof(p));^
ning@ubuntu:~/Documents$ gcc sizeof.c -m32
ning@ubuntu:~/Documents$ ./a.out
sizeof(p)=4
ning@ubuntu:~/Documents$ gcc sizeof.c
sizeof.c: In function ‘main’:
sizeof.c:10:11: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]printf("sizeof(p)=%d\n",sizeof(p));

程序运行平台
      不同的平台上对不同数据类型分配的字节数是不同的。
      个人对平台的理解是CPU+OS+Compiler,是因为: 
      1、64位机器也可以装32位系统(x64装XP); 
      2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的); 
      3、即使是32位的编译器也可以弄出64位的integer来(int64)。 
      以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。 
      虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。 
      理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。

常用数据类型对应字节数
  可用如sizeof(char),sizeof(char*)等得出

32位编译器:

char :1个字节
      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   4个字节
      long long:  8个字节
      unsigned long:  4个字节

64位编译器:

char :1个字节
      char*(即指针变量): 8个字节
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   8个字节
      long long:  8个字节
      unsigned long:  8个字节

64ubuntu编译32位程序相关推荐

  1. 64位Ubuntu上编译32位程序

    1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...

  2. 在64位linux下编译32位程序

    一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...

  3. 【工程项目经验】Centos 编译32位程序

    Centos下64位系统下编译32位程序时报错: /usr/bin/ld: cannot find -lgcc_s 解决办法: Script "build.sh" builds b ...

  4. win10子系统linux下cmake编译32位程序

    文章目录 Ubuntu 18运行32位程序 添加软件源 安装编译环境 编写CMakeLists.txt cmake编译 运行程序 SUSE 15.0运行32位程序 m32编译 添加软件源 安装qemu ...

  5. 64位的GCC 编译32位程序

    64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...

  6. linux64下编译32位程序,报错

    linux64下编译32位程序 gcc -o xxx -m32 xxx.c 遇到问题 /usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件 ...

  7. linux 64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32

    -m32选项将int,long和指针设置为32位,并生成在任何i386系统上运行的代码. -m64选项将int设置为32位和long,指针设置为64位,并为AMD的x86-64体系结构生成代码. -m ...

  8. linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32

    原文链接:https://blog.csdn.net/yyywill/article/details/54426900 x86-64 与 IA-64 x86-64一般称为AMD x86-64,难道x8 ...

  9. 64位Ubuntu上编译32位程序操作步骤

    1.      确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.      确认打开了多架构支持功能,应该输出为i386,执行: ...

最新文章

  1. 使php支持mbstring库以及使用
  2. Facebook开源模型可解释库Captum,这次改模型有依据了
  3. 11.5. blockquote
  4. 用时间戳判断两个时间是否在同一天和时区转换问题
  5. Transact_SQL小手册(各种sql语句大集合)
  6. 长连接测试_电磁兼容测试照片
  7. Atitit.antlr实现词法分析
  8. 彻底搞懂 Git 进阶用法
  9. 湖南师大acm10015
  10. 程序员刚入职一周,有公司又开了更高薪资的offer,怎么办?
  11. 转x电容和y电容的区别
  12. [POJ 3683]Priest Johns Busiest Day
  13. 金蝶苍穹,报表查询插件
  14. 背景设置为透明RGB
  15. FC6下的ftp服务和telnet服务安装
  16. 点心省电、省电宝、金山电池医生对比评测
  17. 2011年度全球50个最佳网站
  18. 2019店铺淘客新方向,该如何去做?
  19. Windows操作系统万能Ghost全攻略——转载网管论坛
  20. 如何实现OSM地图本地发布并自定义配图

热门文章

  1. 批量添加DNS的A记录和PTR记录
  2. 给Vista系统加入一键还原功能
  3. JavaScript判断浏览器类型及版本(新增谷歌的Chrome)
  4. php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性
  5. java泛型 算法_非常具体的Java泛型问题 – 如何返回传递给方法的相同类型?
  6. 大数据与数据挖掘考试题_2017-2019年全国Ⅱ卷高考考点数据分析(理综合)
  7. 深度学习之基于GAN实现手写数字生成
  8. [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
  9. mysql建立 分区_MySQL-mysql分区合理建立
  10. 深度学习之生成对抗网络(1)博弈学习实例