64ubuntu编译32位程序
今天做实验,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位程序相关推荐
- 64位Ubuntu上编译32位程序
1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...
- 在64位linux下编译32位程序
一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...
- 【工程项目经验】Centos 编译32位程序
Centos下64位系统下编译32位程序时报错: /usr/bin/ld: cannot find -lgcc_s 解决办法: Script "build.sh" builds b ...
- win10子系统linux下cmake编译32位程序
文章目录 Ubuntu 18运行32位程序 添加软件源 安装编译环境 编写CMakeLists.txt cmake编译 运行程序 SUSE 15.0运行32位程序 m32编译 添加软件源 安装qemu ...
- 64位的GCC 编译32位程序
64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...
- linux64下编译32位程序,报错
linux64下编译32位程序 gcc -o xxx -m32 xxx.c 遇到问题 /usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件 ...
- linux 64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32
-m32选项将int,long和指针设置为32位,并生成在任何i386系统上运行的代码. -m64选项将int设置为32位和long,指针设置为64位,并为AMD的x86-64体系结构生成代码. -m ...
- linux64平台上编译32位程序: GCC编译选项 -m64 -m32 -mx32
原文链接:https://blog.csdn.net/yyywill/article/details/54426900 x86-64 与 IA-64 x86-64一般称为AMD x86-64,难道x8 ...
- 64位Ubuntu上编译32位程序操作步骤
1. 确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2. 确认打开了多架构支持功能,应该输出为i386,执行: ...
最新文章
- 使php支持mbstring库以及使用
- Facebook开源模型可解释库Captum,这次改模型有依据了
- 11.5. blockquote
- 用时间戳判断两个时间是否在同一天和时区转换问题
- Transact_SQL小手册(各种sql语句大集合)
- 长连接测试_电磁兼容测试照片
- Atitit.antlr实现词法分析
- 彻底搞懂 Git 进阶用法
- 湖南师大acm10015
- 程序员刚入职一周,有公司又开了更高薪资的offer,怎么办?
- 转x电容和y电容的区别
- [POJ 3683]Priest Johns Busiest Day
- 金蝶苍穹,报表查询插件
- 背景设置为透明RGB
- FC6下的ftp服务和telnet服务安装
- 点心省电、省电宝、金山电池医生对比评测
- 2011年度全球50个最佳网站
- 2019店铺淘客新方向,该如何去做?
- Windows操作系统万能Ghost全攻略——转载网管论坛
- 如何实现OSM地图本地发布并自定义配图
热门文章
- 批量添加DNS的A记录和PTR记录
- 给Vista系统加入一键还原功能
- JavaScript判断浏览器类型及版本(新增谷歌的Chrome)
- php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性
- java泛型 算法_非常具体的Java泛型问题 – 如何返回传递给方法的相同类型?
- 大数据与数据挖掘考试题_2017-2019年全国Ⅱ卷高考考点数据分析(理综合)
- 深度学习之基于GAN实现手写数字生成
- [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
- mysql建立 分区_MySQL-mysql分区合理建立
- 深度学习之生成对抗网络(1)博弈学习实例