GCC编译编译64位

时间:2017-11-19 16:28:16

标签: c++ build compilation g++ sublimetext3

我正在尝试用64位的G ++编译C ++。

我正在使用sublime text 3.这是我的构建系统文件:

{
  "cmd": ["g++ ", "-m64", "-std=c++0x", "$file", "-o", "${file_path}/${file_base_name}"],
  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
  "working_dir": "${file_path}",
  "selector": "source.c, source.c++, source.cxx, source.cpp",
  "variants": 
  [ 
    {
      "name": "Run",
      "cmd": ["bash", "-c", "g++ -m64 -std=c++0x '${file}' -o '${file_path}/${file_base_name}.exe' &&  xterm -e bash -c '\"${file_path}/${file_base_name}.exe\" ; read'"]  
    }
  ]    
}

编译文件仍然创建为32位。 当我运行g ++ --print-multi-lib时,我得到:

32;@m32
   x32;@mx32

我确定这与它有关,但我不确定如何解决它,(对此很新),我已经尝试安装multilib 64但没有任何改变。

任何帮助表示赞赏。谢谢:))

1 个答案:

答案 0 :(得分:1)

您的崇高文本3 IDE令您感到困惑并且破坏了您并且您错误配置了它。

我希望您使用的是某些POSIX操作系统,例如Linux操作系统。

首先学习在命令行上编译(在某些终端,编辑器或IDE的外部)。您绝对需要了解如何invoke the GCC compiler(使用终端中的命令)。这里有一些提示。

如果您想要C ++ 11或更高版本,请务必拥有最新的GCC编译器,至少GCC 6。也许您需要升级编译器。

编译一个简单的单源程序

要将single.cc中的单源C ++程序编译为tinyprog可执行文件,请使用

g++ -std=c++11 -Wall -g single.cc -o tinyprog

仅供参考,-std=c++11设置您的C ++标准,-Wall请求几乎所有警告(您甚至可以添加-Wextra以获取更多警告),-g适用于调试信息(在DWARF中)和-o tinyprog设置输出可执行文件。 ls -l tinyprogldd tinyprogfile tinyprog可以了解有关可执行文件的更多信息。

编译一个简单的多源程序

编译一个小的多源C ++程序,例如:由first.ccsecond.cc组成的smallprog可执行文件

  1. 将每个文件编译成目标文件

    g++ -std=c++11 -Wall -g -c first.cc -o first.o
    g++ -std=c++11 -Wall -g -c second.cc -o second.o
    
  2. 将这些目标文件链接到您的可执行文件

    g++ -std=c++11 -Wall -g first.o second.o -o smallprog
    
  3. 构建更复杂的程序

    如果您使用额外的库,则可能需要在编译时添加一些额外的-I includedir 选项,以及一些额外的-L libdir 和-l libname 选项。您可能希望使用pkg-config来帮助您。如果好奇,您可以在-v之后添加g++,以显示g++

    所执行的实际步骤
      

    我运行g++ --print-multi-lib

    这只是查询您的g++编译器的配置方式。您也可以单独尝试g++ -v

    一旦您能够通过(一个或多个)命令进行编译,请考虑使用一些build automation工具。要使用GNU make构建单个程序,您可以从this获取灵感。

    一旦您熟练地编译直通命令(直接或通过某些构建自动化工具,如makeninja或通过您的脚本),请阅读编辑器或IDE的文档以对其进行适当配置