精华内容
下载资源
问答
  • masm 的编译选项编译选项非常重要,直接影响编译及连接能否成功
  • 编译64编译32位程序

    千次阅读 2015-04-09 14:28:39
    在64的机器上编译32位还是62程序,主要是要编译器和链接上加上参数据:-m32 (编译32位) -m64(编译64) 自己写Makefile的话,把上面的标志放到编译器和链接参数中就可以了。   如果用autoconf生成...
    
    在64位的机器上编译32位还是62位程序,主要是要编译器和链接器上加上参数据:-m32 (编译32位) -m64(编译64)

    自己写Makefile的话,把上面的标志放到编译器和链接器参数中就可以了。

     

    如果用autoconf生成Makefile的话,则要在configure.in中的编译器和链接器变量上加上上面参数:

    例如:下面例子是编译32位的程序,如果要编译64位的,则把红色的部分换成 -m64

     

    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.

    AC_PREREQ(2.59)
    AC_INIT(ShowServer, 1.0, kl222@126.com)
    AC_CONFIG_SRCDIR([.])
    AC_CONFIG_HEADER([config.h])
    AM_INIT_AUTOMAKE(ShowServer, 1.0)

    # Checks for programs.
    AC_PROG_CXX

    CFLAGS=" -O2"
    CXXFLAGS="-m32 -D_DEBUG "
    LIBS="-L. -L$ACE_LIB -L$LIB_PATH/lib"
    LDFLAGS="-m32"

    # Checks for libraries.
    AC_CHECK_LIB([pthread], [pthread_create], , exit 1)
    AC_HAVE_LIBRARY([ACE], , exit 1)
    AC_HAVE_LIBRARY([Cfg], , exit 1)

    # Checks for header files.
    AC_HEADER_STDBOOL
    AC_C_CONST

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.


    AC_PROG_INSTALL

    AC_OUTPUT(Makefile ShowServer/Makefile TestClient/Makefile)

     

     

     

     

    linux32、 linux63分别用于设置编译环境

    linux32 ../configure

     

    linux32 - Set i686 uname emulation processes.  linux64 - Reset uname emulation

    这个命令相当于 ./configure 参数中设置的 --host 和 --build

     

     

    在64位平台上编译32位的ACE:

    linux32 ../configure --with-tao=no --enable-ssl=no --prefix=/home/sxit/kl/ACE_wrappers/build --enable-ace-examples=no --enable-ace-tests=no --enable-ace-cdr-swap-on-read=no --enable-reentrant=no --enable-ace-cdr-alignment=no CCFLAGS="-m32 " CPPFLAGS="-m32 " CXXFLAGS="-m32" CFLAGS="-m32"

     

    注意这里不要加 LDFLAGS="-m32" ,因为 linux32已把环境设置成32的环境。

    在编译libiconv库里,则要加LDFLAGS="-m32" 否则编译出来的为32的.o文件,链接成64位的.so文件

    [root@HYWG libiconv-1.9.1]# linux32 ./configure CCFLAGS="-m32 " CPPFLAGS="-m32 " CXXFLAGS="-m32" CFLAGS="-m32" LDFLAGS=-m32

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

    -m32选项将int,long和指针设置为32位,并生成在任何i386系统上运行的代码。
    -m64选项将int设置为32位和long,指针设置为64位,并为AMD的x86-64体系结构生成代码。
    -mx32选项将int,long和指针设置为32位,并为AMD的x86-64体系结构生成代码。编译出的程序只能在x86-64上运行。

    x86-64 与 IA-64

    x86-64一般称为AMD x86-64,难道x86-64不是Intel首先搞出来的指令集么?这回的确是AMD干的,但是用的是Intel 16bits升到32bits向下兼容的套路。大致是这样的:

    • x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。
    • x86-64:又简称为x64,最初开发为1999年AMD,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被INTEL所采用。
    • ia-64:其实ia64的历史早于x86-64x,最初由INTEL和惠普联合推出。由于ia-64不与32位兼容,所以没有受到重视。直到INTEL采用了AMD的x86-64架构,才正式的批量生产。而后为了日益扩张的计算需求,INTEL重新将IA-64拿出来,发布了安腾系列服务器CPU。

      x86-64架构基于x86,是为了让x86架构CPU兼容64位计算而产生的技术。X86-64架构的设计是采用直接简单的方法将目前的x86指令集扩展。这个方法与当初的由16位扩展至32位的情形很相似。优点在于用户可以自行选择x86平台或x64平台,兼容性高。

      IA-64则是原生的纯64位计算处理器,并且与x86指令不兼容。如果想要执行x86指令需要硬件虚拟化支持,而且效率不高。优点在于IA-64架构体系将拥有64位内存寻址能力,能够支持更大的内存寻址空间。并且由于架构的改变,性能比起x86-64的64位兼容模式更高更强。 
      所以,IA-64操作系统也是比较少见的,由于只能在INTEL安腾系列处理器及AMD部分服务器处理器运行,所以主流市场并不常见。而且,这些IA-64架构处理器也不能够使用x64操作系统。而x86-64处理器则可以自由选择x86或是x64操作系统。

    编译选项

    These `-m’ switches are supported in addition to the above on AMD x86-64 processors in 64-bit environments. 
    -m32 
    -m64 
    -mx32 
    Generate code for a 32-bit or 64-bit environment.

    • The -m32 option sets int, long and pointer to 32 bits and generates code that runs on any i386 system.
    • The -m64 option sets int to 32bits and long and pointer to 64 bits and generates code for AMD’s x86-64 architecture.
    • The -mx32 option sets int, long and pointer to 32 bits and generates code for AMD’s x86-64 architecture.

    For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options.

    1.c

    编译

    执行结果 
    -mx32选项编译出的程序只能在x86-64上运行。

    展开全文
  • x86-64 与 IA-64 x86-64一般称为AMD x86-64,难道x86-64不是Intel首先搞出来的指令集么?这回的确是AMD干的,但是用的是Intel 16bits升到32...-mx32选项编译出的程序只能在x86-64上运行。 如有错误请帮忙指正。

    x86-64 与 IA-64

    x86-64一般称为AMD x86-64,难道x86-64不是Intel首先搞出来的指令集么?这回的确是AMD干的,但是用的是Intel 16bits升到32bits向下兼容的套路。大致是这样的:

    • x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。
    • x86-64:又简称为x64,最初开发为1999年AMD,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被INTEL所采用。
    • ia-64:其实ia64的历史早于x86-64x,最初由INTEL和惠普联合推出。由于ia-64不与32位兼容,所以没有受到重视。直到INTEL采用了AMD的x86-64架构,才正式的批量生产。而后为了日益扩张的计算需求,INTEL重新将IA-64拿出来,发布了安腾系列服务器CPU。

      x86-64架构基于x86,是为了让x86架构CPU兼容64位计算而产生的技术。X86-64架构的设计是采用直接简单的方法将目前的x86指令集扩展。这个方法与当初的由16位扩展至32位的情形很相似。优点在于用户可以自行选择x86平台或x64平台,兼容性高。

      IA-64则是原生的纯64位计算处理器,并且与x86指令不兼容。如果想要执行x86指令需要硬件虚拟化支持,而且效率不高。优点在于IA-64架构体系将拥有64位内存寻址能力,能够支持更大的内存寻址空间。并且由于架构的改变,性能比起x86-64的64位兼容模式更高更强。
      所以,IA-64操作系统也是比较少见的,由于只能在INTEL安腾系列处理器及AMD部分服务器处理器运行,所以主流市场并不常见。而且,这些IA-64架构处理器也不能够使用x64操作系统。而x86-64处理器则可以自由选择x86或是x64操作系统。

    编译选项

    These `-m’ switches are supported in addition to the above on AMD x86-64 processors in 64-bit environments.
    -m32
    -m64
    -mx32
    Generate code for a 32-bit or 64-bit environment.

    • The -m32 option sets int, long and pointer to 32 bits and generates code that runs on any i386 system.
    • The -m64 option sets int to 32bits and long and pointer to 64 bits and generates code for AMD’s x86-64 architecture.
    • The -mx32 option sets int, long and pointer to 32 bits and generates code for AMD’s x86-64 architecture.

    For darwin only the -m64 option turns off the -fno-pic and -mdynamic-no-pic options.

    1.c

    编译

    执行结果
    -mx32选项编译出的程序只能在x86-64上运行。

    如有错误请帮忙指正。

    展开全文
  • vs2017编译32位和64的GDAL

    千次阅读 2018-12-04 21:53:51
    VS2017编译32位和64的GDAL 文章目录VS2017编译32位和64的GDAL下载最新版GDAL源文件编辑配置文件1. 编辑nmake.opt2. 命令行参数开始编译 下载最新版GDAL源文件 Downloading GDAL/OGR Source 将源文件解压之后,...

    VS2017编译32位和64位的GDAL

    下载最新版GDAL源文件

    Downloading GDAL/OGR Source

    将源文件解压之后,复制一份,分别命名为gdal_86gdal_64,用于分开编译32位和64位的gdal。

    编辑配置文件

    有两种可选方案:

    • 编辑nmake.opt文件
    • 命令行参数

    1. 编辑nmake.opt

    分别按下面方法修改gdal_86gdal_64,注意64位的需要取消注释WIN64

    • MSVC设置为1910(即为vs2017)
    # 1910 = 15.0(2017)
    # 1900 = 14.0(2015)
    #
    !IFNDEF MSVC_VER
    #assume msvc VS2015.
    MSVC_VER=1910
    !ENDIF
    
    • GDAL_HOME设置为想要存放安装GDAL的路径
    !IFNDEF GDAL_HOME
    GDAL_HOME = "D:\build\gdal232_64"
    

    64位还需要进行如下修改:
    取消注释WIN64,编译32位不需要修改。

    # Uncomment the following if you are building for 64-bit windows
    # (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
    # compiles.
    WIN64=YES
    # Capture WIN64=1 if specified in NMAKE command line
    !IFDEF WIN64
    WIN64=YES
    !ENDIF
    

    2. 命令行参数

    ####在后面的开始编译中介绍####

    开始编译

    • 32位

    打开x86 Native Tools Command Prompt for VS 2017,切换至源文件所在目录,然后运行如下代码:(注意,逐行运行下面的命令,上一条运行没有报错再继续。)

    nmake -f makefile.vc
    
    nmake -f makefile.vc install
    
    nmake -f makefile.vc devinstall
    
    • 64位

    打开x64 Native Tools Command Prompt for VS 2017,切换至源文件所在目录,然后运行如下代码:(注意,逐行运行下面的命令,上一条运行没有报错再继续。)

    nmake -f makefile.vc
    
    nmake -f makefile.vc install
    
    nmake -f makefile.vc devinstall
    

    如果没有按照第1部分要求取消nmake.opt文件中WIM64的注释则应该在编译64位库时明确给出该命令:

    nmake -f makefile.vc WIN64=yes
    
    nmake -f makefile.vc install WIN64=yes
    
    nmake -f makefile.vc devinstall WIN64=yes
    

    同样的也可以在命令行中指定编译器版本:

    nmake -f makefile.vc MSVC_VER=1910 WIN64=yes
    
    nmake -f makefile.vc install MSVC_VER=1910 WIN64=yes    
    
    nmake -f makefile.vc devinstall MSVC_VER=1910 WIN64=yes
    

    更多高级编译选项,参见官方Wiki BuildingOnWindows

    展开全文
  • Ubuntu 64位编译32位程序

    千次阅读 2019-05-20 17:39:24
    一般情况下,一个平台上只能编译当前平台对应的应用程序,比如,64平台编译64应用程序,但是随着64平台的普及,多数采用了64操作系统,而有时又基于某些原因需要编译32位的应用程序. 本文旨在说明如何在64操作...
  • 编译CxImage 32位+64

    2018-09-02 00:59:26
    vc6: 直接编译 crtdll, 兼容任何项目, 不需要安装VC ... 只需要个文件: cximagecrtu.lib, cximagecrtu.dll #pragma comment(lib, "cximagecrtu.lib") 把 cximagecrtu.dll 放入可执行目录...
  • Windows下编译FFmpeg 32位和64DLL

    千次阅读 2020-10-13 01:16:04
    此教程编译环境为Win10 64+MSYS2 一.安装MSYS2 1.点击下载 msys2-x86_64-20200903.exe, 也可以去MSYS2官网下载最新版。 2.安装msys2到默认路径 C:\msys64。 3.运行mys2并执行命令pacman -Syu,提示一律输入Y同意...
  • X86_64机器编译运行32位程序

    千次阅读 2014-11-30 17:29:16
    在最近的模拟器项目中,遇到了X86_64机器编译运行32位程序 的问题,感觉挺有意思的! 在操作这个模拟器时,以前都是在32位机器上编译运行的,运行一切ok! 可是,实验室换新电脑了,是64的! 而且因为模拟器...
  • openssl 编译32位 64

    千次阅读 2016-08-16 15:48:54
    一、下载ActivePerl 配置过程中需要生成一些mak文件,这些生成代码用perl脚本生成,所以要安装一个ActivePerl. ...、 设置vs的环境变量 添加VS2010的环境变量,进入cdm命令行输入: set path=%path%;C:\P
  • 【Qt】Qt源码编译32位、64

    千次阅读 2020-04-27 18:05:18
    0 环境配置 Windows 10 Visual Studio 2017 Community Qt 5.15.0-beta4 1 下载源码 下载地址 下载qt源码并解压 2 编译配置(32bit &...这一步骤可选择编译版本,32位或64...要编译32位就选x86,64就选x64。 ...
  • 在64linux下编译32位程序

    千次阅读 2017-04-12 15:03:16
    -m32来使得gcc编译32位程序(在x86_64系统上),使用-m elf_i386参数可以使得64的ld能够兼容32位的库 gcc -m32 ld -m elf_i386 ld用-V选项可以查看支持的平台
  • Visual Studio 编译6432位程序

    千次阅读 2020-05-15 10:24:56
    用了很久VS一直没有这个需求,现在需要把一个WPF程序(原32位)重新编译成64。 我的系统是64,vs是32位(当然了) 默认一般是“Any CPU” 点击“Any CPU”下拉框,“配置管理” 新建x64或x86,重新...
  • 日期:2018年4月29日 背景:最近在学习Github上的一个开源C++写的操作系统微内核项目FreeNOS,各种宏内核中的服务作为一个独立的services在微内核中,基于消息的...2. 编译FreeNOS 3. Scons浅入浅出 Error: ...
  • VS2010新建的VC++项目默认的组件平台是32位 要将它编译为64程序,按以下步骤: 1.点击“Win32”下拉框,打开“配置管理” 2.点击“活动解决方案管理平台”下拉框,...
  • VS2017编译32位/64QT静态库

    千次阅读 2019-07-05 16:56:04
    VS2017 QT静态库版本编译windows下QT静态库编译准备工具...记录windows下使用vs2017编译qt5.9.7版本32位,64静态库过程 准备工具 QT源码压缩包 这里使用的5.9.7版本的zip包 Visual Studio2017开发环境 Python Per...
  • 文章目录一、下载opencv3.411. 下载2. 解压3. 生成文件、下载CMake1. 下载2. 解压、启动CMake ...自己编译一个适用于32位操作系统运行的OpenCV3.41。 一、下载opencv3.41 1. 下载 下载路径:opencv官方地址 ...
  • 目前最新版本已经到了:jpegsr9d.zip版本。 2、根据vs2010编译器的版本10.0,我们下载jpegsr9b.zip...3、64库的编译:使用vs2010的64的命令提示工具: 4、使用vs2010打开:jpeg.sln工程:进行配置管理设...
  • ubuntu64交叉编译flex为32位程序
  • Ubuntu 16.04 64 编译 32 程序

    千次阅读 2019-01-03 17:07:35
    在 Ubuntu 16.04 64 OS 环境下编译 32 程序的解决办法
  • 我在32位编译没有出现以下错误,64编译编译情况如下: gcc -shared -fpic -pthread -I/root/proj/ipc_manager-11-3/include ....(省略) /usr/bin/ld: common/ipc.o: relocation R_X86_64_32S against `cmd_...
  • 64系统下 编译 32位

    2014-12-29 22:21:13
    64ubuntu下编译32位汇编程序(同时链接C库) as --32 cmd.s -o cmd.o # 调试的话加上选项 -gstabs ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 cmd.o -o cmd -lc  --32声明为32位程序   链接时...
  • 64gcc编译32位汇编

    2015-01-31 21:18:00
    由于书中内容是32位汇编程序,但是机器使用的是64操作系统,自带的gcc也是64的,导致编译生成的程序,一运行就会Segment Fault。经过查询之后,发现是调用printf函数的时候,总是报错,查询之后发现是32位汇编和...
  • 64机器上 编译32位程序

    千次阅读 2013-07-30 15:30:49
    在64的机器上编译32位还是62程序,主要是要编译器和链接上加上参数据:-m32 (编译32位) -m64(编译64) 在自己的makefile中添加"CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" 即可 因为项目中用到...
  • 64主机编译32位交叉编译器

    千次阅读 2021-01-15 16:53:11
    需要加32位适配: sudo apt-get install lib32stdc++6 sudo apt-get install lib32z1
  • 64Ubuntu上编译32位程序操作步骤

    万次阅读 2016-03-18 16:10:07
    64Ubuntu上编译32位程序操作步骤

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 236,469
精华内容 94,587
关键字:

编译选项32位