导航:首页 > 源码编译 > 软件编译多少位好

软件编译多少位好

发布时间:2023-06-05 04:11:21

Ⅰ 如何编译64位dll程序,有几种情况,在32位XP上用VC++6.0或者VS2010该怎么编译64位的dll。

在64位的操作系统上用vs软件编译的dll默认就是64位。
在32位XP上用VC++6.0编译64位的dll,需要安装sdk(最新版本是sdk2003),在开始菜单——sdk——open build environment window——windows server 2003 64-bit build environment——set win svr 2003 x64 build env进入命令行,从命令行调用msdev,将vc选项里的include和lib的第一个默认路径设为sdk目录下64位头文件和库的路径,编译出的dll似乎就是64位的了。这个是从网页上看到的,没实践过。
在32位XP上使用vs2010就简单多了,新建一个项目(解决方案),加入代码,设置X64,编译生成即可。

Ⅱ vs有没有32位与64位的区别

visualstudio没有专门的64位版,但32位版可以在64位系统上面正常使用。

由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件。

编译程序根据需要选择不同的编译环境,x86和win32为32位程序,x64为64位程序,可以选择不同的编译条件形成不同位的软件。

代码中的基本数据类型,会根据操作系统的位数来分类内存大小。

如int型在32位操作系统下为4字节,在64位系统下为8字节。

因此在64位上对int型数据操作,编译生成32位的程序,有可能导致int型越界,软件出现问题,32位的程序在64位操作系统上运行,由于64位操作系统的寻址和偏移问题,也有可能导致程序在运行过程中,计算结果与32位系统不一致。

64位操作系统理论上能够箭筒32位和64位软件,32位操作系统不能运行64位程序。

在vs中,x64生成的程序只能在64位系统中运行。如果用户用的是32位的系统(比如XP),则运行不了程序。

x32生成32位程序,由于64位系统也能运行32位的程序,所以这个选项跟AnyCPU一样可以同时运行在两种系统中,但效率没有AnyCPU高,因为64位的软件跟CPU交互的数据要比32位的接近大一倍。

所以当要把项目代码转移到另一台计数机时,就要考虑这个问题。假如原来选择的目标平台是x64,新电脑的系统是32位,当你按F5调试运行时,则跑不起来,这时把目标平台改成AnyCPU或者x32就能解决了。

(2)软件编译多少位好扩展阅读:

如果项目引用有32位的dll(c++编译生成的),则只能选择32位平台,否则也会报错,整个项目要保持一致。

在项目调试的过程中,可以看到32位与64位程序加载的dll不同。

32位程序从system32中加载dll;而64位程序从syswow64中加载dll。

64bit程序在x86-64处理器上并不会带来明显的性能提高,它只是增加了处理器的寻址范围,可以使用更大的内存。而对于VS这种并非内存敏感的程序,并不十分需要迁移到64bit下。

另外,还有一个历史原因,就是微软一直没有完成64bit下的JIT调试器的EditandContinue功能,这是因为64bit的JIT是C++团队做的,和原生CLR团队的32bitJIT有很多不同。

如果微软推出了64bit的VS,那么调试的体验会受到限制,这也是为什么微软一直以来没有推出64bitVS的原因。

Ⅲ 64位linux编译32位程序

在64位的Linux下,gcc 编译 32 位程序需要添加参数 -m32 ,ld需要添加参数是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的连接器,将目标文件连接为可执行程序。
3、举例:

gcc -m32 -o hello hello.c

gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o

Ⅳ 编译64位程序无法使用32位编译的lib么

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误 In file included from /usr/include/features.h:378, from /usr/include/assert.h:37, from ../../../include/tinyxml/tinystr.h:42, from ../../../src/tinyxml/tinystr.cpp:32: /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录这时候需要安装 gcc所有支持文件 sudo apt-get install gcc-multilib 将会安装下列额外的软件包: 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 libstdc++6 libstdc++6-4.4-dev 建议安装的软件包: 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 libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc 下列【新】软件包将被安装: gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64下列软件包将被升级:

Ⅳ 为什么好多软件都区分32位和64位,到底有什么区别

64位软件和32位软件最大的区别是:64位的软件可以同时操作大于4GB的内存(注意这里的内存指的是地址空间,而不是物理内存)。



但是,上述过过程有几个非常重要的地方:

1)动态链接库

2)系统API首先,你32位的操作系统上一般是没有64位的库文件,如果你的应用程序源代码中引用了只有64位的动态库中才有的函数,很显然你链接的时候就会出问题。

另外,我们很多程序肯定用到了read和write等C语言库函数,而库函数的实现是依赖于系统API的。如果你工作在windows上,程序大多数是以exe形式发布的,你得到的程序是目标文件以后的结果,本身是带有位数的;如果你工作在linux上,本身大部分软件包rpm等也是已经编译好的,就是说,它们本身就是具有“位数”的。

如果你得到的是源码,那么基本上你的应用程序还没有“位数”的概念,你用多少位的编译器去编译它,它就是多少位的应用程序。我们这里讨论多少位的程序,都是针对已经编译到目标文件以后的状态。所以32位和64位软件的并存是CPU、系统、编译综合决定的,而这些都是因为时代的需要。

对于Windows系统而言,64位的系统上往往有32位的库和其他必要的信息,基本上能兼容32位的程序。以上是个人的一些经验和总结,希望可以帮助到大家,如果有不同意见和建议,欢迎评论区留言讨论。

阅读全文

与软件编译多少位好相关的资料

热点内容
怎么批量有顺序的命名文件夹 浏览:209
杭州程序员健身 浏览:17
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151