我正在尝试用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但没有任何改变。
任何帮助表示赞赏。谢谢:))
答案 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 tinyprog
,ldd tinyprog
,file tinyprog
可以了解有关可执行文件的更多信息。
编译一个小的多源C ++程序,例如:由first.cc
和second.cc
组成的smallprog
可执行文件
将每个文件编译成目标文件
g++ -std=c++11 -Wall -g -c first.cc -o first.o
g++ -std=c++11 -Wall -g -c second.cc -o second.o
将这些目标文件链接到您的可执行文件
g++ -std=c++11 -Wall -g first.o second.o -o smallprog
如果您使用额外的库,则可能需要在编译时添加一些额外的-I
includedir 选项,以及一些额外的-L
libdir 和-l
libname 选项。您可能希望使用pkg-config来帮助您。如果好奇,您可以在-v
之后添加g++
,以显示g++
我运行
g++ --print-multi-lib
这只是查询您的g++
编译器的配置方式。您也可以单独尝试g++ -v
。
一旦您能够通过(一个或多个)命令进行编译,请考虑使用一些build automation工具。要使用GNU make
构建单个程序,您可以从this获取灵感。
一旦您熟练地编译直通命令(直接或通过某些构建自动化工具,如make
或ninja
或通过您的脚本),请阅读编辑器或IDE的文档以对其进行适当配置