我正在尝试用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,但什么都没有改变。
感谢您的帮助。谢谢您:)
发布于 2017-11-20 02:00:29
您出色的text 3 IDE让您感到困惑和宠坏,而且您错误配置了它。
我希望您使用的是POSIX操作系统,例如Linux。
首先学习如何在命令行上进行编译(在某些终端中,在编辑器或集成开发环境之外)。您绝对需要了解如何使用invoke the GCC compiler (在终端中使用命令)。这里有一些提示。
确保拥有最新的GCC编译器,如果您想要C++11或更好的版本,至少要使用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将这些目标文件放入可执行文件中
g++ -std=c++11 -Wall -g first.o second.o .o -o smallprog
构建更复杂的程序
如果您使用额外的库,则可能需要在编译时添加一些额外的-I包含目录选项,并在链接时添加一些额外的-L libdir和-l libname选项。您可能希望使用pkg-config来帮助您。如果好奇,您可以在g++之后添加-v,以显示g++完成的实际步骤
我运行
g++ --print-multi-lib
这只是查询您的g++编译器是如何配置的。您也可以单独尝试g++ -v。
一旦您能够使用(一个或多个)命令进行编译,请考虑使用某些build automation工具。要使用GNU make构建单个程序,您可以从this中获得灵感。
一旦您精通了通过命令编译(直接或通过make或ninja等构建自动化工具或通过您的脚本),请阅读编辑器或集成开发环境的文档以对其进行适当的配置。
https://stackoverflow.com/questions/47379128
复制相似问题