首页 > 系统相关 >Linux 下使用GCC/G++编译C++程序

Linux 下使用GCC/G++编译C++程序

时间:2023-01-10 21:33:54浏览次数:46  
标签:std GCC ++ C++ 编译 Linux cpp hello

Linux 下使用GCC/G++编译C++程序

例程:

/* hello.cpp */ 
#include <iostream>
using namespace std;
int main() 
{ 
    cout << "hello cpp"<<endl; 
    return 0; 
} 

使用GCC编译器

直接使用 gcc 编译:

gcc hello.cpp 

编译失败,输出一堆信息:

/usr/bin/ld: /tmp/ccQc3RFB.o: warning: relocation against `_ZSt4cout' in read-only section `.text'
/usr/bin/ld: /tmp/ccQc3RFB.o: in function `main':
hello.cpp:(.text+0x15): undefined reference to `std::cout'
/usr/bin/ld: hello.cpp:(.text+0x1d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: hello.cpp:(.text+0x24): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/bin/ld: hello.cpp:(.text+0x2f): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/bin/ld: /tmp/ccQc3RFB.o: in function `__static_initialization_and_destruction_0(int, int)':
hello.cpp:(.text+0x66): undefined reference to `std::ios_base::Init::Init()'
/usr/bin/ld: hello.cpp:(.text+0x81): undefined reference to `std::ios_base::Init::~Init()'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status

正确做法是需要手动加选项连接到C++标准库:

gcc hello.cpp -lstdc++

成功编译。

使用G++编译器

  • g++将gcc默认语言设为C++的一个特殊版本
  • 链接时它自动用 C++ 标准库而不用C标准库
  • 通过遵循源码的命名规范并指定对应库的名字

直接使用g++命令

g++ hello.cpp

成功编译。

标签:std,GCC,++,C++,编译,Linux,cpp,hello
From: https://www.cnblogs.com/3to4/p/17041427.html

相关文章

  • Linux -常用命令与目录结构网络文件配置机器名设置域名解析
    目录命令提示符必备知识点命令语法规范系统路径信息目录结构路径信息查找方法系统命令快捷方式命令目录结构命令文件编辑命令vi与vim编辑目录(重点)vim命令编辑文件可能会......
  • Linux实现定时任务(CentOS)
    1、编辑crontab文件配置文件路径:/etc/crontab在配置文件中,原本6个段的配置,我们需要在命令前面再加一个用户段即:分时日月周用户命令直接添加到最后一行即可SHELL=......
  • Linux基础命令
    Linux系统命令Linux命令基础知识命令提示符管理员用户:[root@guts~]#root指当前登录主机的用户guts是主机(我们这里是虚拟机)名称~表示所处⽬录位置,默认......
  • GPS转化ECEF坐标系(0) python和c++代码
    https://www.cxyzjd.com/article/taiyang1987912/112982150 importmatha=6378137b=6356752.3142f=(a-b)/ae_sq=f*(2-f)pi=3.14159265359'''......
  • C++获取CPU信息
    #include"windows.h" #include"iostream"#include"string"usingnamespacestd;//用来存储信息DWORDdeax;DWORDdebx;DWORDdecx;DWORDdedx;voidExeCPUID(DWORD......
  • LINUX的初识
    目录linxu常见岗位计算机的种类服务器品牌服务器内部组成部分服务器磁盘阵列linux发展史虚拟化技术虚拟化软件下载重要名词解释远程链接工具前期必备知识系统运⾏命令快捷......
  • Linux day2:文件和文件夹相关命令 文件内容编辑命令 Linux常用目录 Linux重要文件
    目录问题说明前期必备知识系统运行命令shutdown-c快捷方式命令ctrl+e目录结构相关命令mkdir-p文件和文件夹相关命令创建文件touch查看文件和目录ls-al查看文件内......
  • 1月10日内容总结——linux前期知识储备,linux系统、目录、文件相关命令,vi和vim,目录结构
    目录一、前期必备知识二、系统运⾏命令帮助指令关机/重启命令三、快捷方式命令四、⽬录结构与文件相关命令1、pwd显示当前目录绝对路径指令2、cd切换到指定目录指令3、mkdi......
  • 【转载】Linux根文件系统
    Linux根文件系统文件系统文件系统是os用来明确存储设备或分区上的文件的方法或数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为......
  • Linux扫盲
    Linux扫盲(简单)计算机的种类台式机笔记本服务器 作⽤:1.可以尽量避免数据不会丢失2.可以24⼩时不间断提供服务3.可以提升⽤户体验......