当前位置: 首页 > 知识库问答 >
问题:

如何使用gcc成功地编译.cpp文件而不添加-lstdc标志?

窦伟
2023-03-14

我的班级的自动评分员使用gcc来为我们的项目评分,它只需要文件上传(.cpp.h),学生不能传入任何参数标志。我的项目使用g编译,没有问题:

g 主.cpp函子1.cpp函子2.cpp函子1.h -o a.out

但是对于gcc,我必须在最后添加-lstdc才能编译:

gcc main . CPP func 1 . CPP func 2 . CPP func 1 . h-o a . out-lstdc

否则会出现错误:

/usr/bin/ld: /tmp/cck9qDRT.o:在函数main':main.cpp:(. text 0x60):未定义的引用std::c' /usr/bin/ld:main.cpp:(. text 0x65):未定义的引用std::basic_ostream

如何使用gcc编译而不需要-lstdc?手动将项目中使用的所有标准库包含在代码中可以解决这个问题吗?

共有1个答案

唐向荣
2023-03-14

令人惊讶的是,答案是做不到。根据gcc手册,gcc命令将. cpp文件识别为C,但gcc的使用并没有添加C库。

从你的描述来看,这听起来像是一个技术错误,签名器是如何设置的,你班上的每个人都会遇到同样的困难。

手动包含所有标准库

那种方式是疯狂的。甚至不要想它。

 类似资料:
  • 我有一个简单的JNI.dll,试图在测试Java应用程序中使用它。它是一个文件,由几个函数组成,头部由生成。(我正在使用MinGW btw编译) 如果我用GCC编译并链接这段代码,我就可以很好地用system.loadLibrary()加载.dll并使用它。但是,如果我用G++编译它,将失败,出现可怕的“UnsatisfiedLinkError”。 g++-wl,--add-stdcall-ali

  • 我最近发现如果文件结尾是.I或.ii,gcc会跳过预处理,于是决定试试看。编译不包含stdio.h的hello world程序: 为什么不起作用? GCC版本6.3.0。

  • 问题内容: 现在,我已经在Windows 7上成功安装了Cython,我尝试使用Cython编译一些Cython代码,但是gcc使我的生活变得艰难。 使用gcc编译代码时,会抛出数十个 对 -erros的 未定义引用 ,并且我很确定src是可用的(如安装教程所述,如果缺少此文件,则会抛出 对 -errors的 未定义引用 )。 奇怪的是,使用*或-script可以很好地工作,但是当仍然在模块上工作

  • 我还在使用一些.jar文件(POI-3.15.jar...),这些文件对于Row、HSSFSheet等类(用于从excel获取信息)是必需的。如果我将这些.jar文件加载到Eclipse中,就没有问题使其正常工作。 但是,使用命令提示符,找不到我的.jar文件。我已经将我的.java文件放在/src文件夹中,并将.jar文件放在我的.classpath所在的地方。编译不起作用。 是否可以将.jav

  • 主要内容:gcc -S指令我们知道,从 C、C++源代码生成可执行文件需要经历 4 个过程,分别为预处理、编译、汇编和链接。其中,《 GCC -E选项:对源程序做预处理操作》一节以 demo.c 源程序文件为例,演示了如何使用 GCC 执行预处理操作,并生成了相应的 demo.i 预处理文件。 [root@bogon demo]# cat demo.c #include <stdio.h> int main(){    p

  • 我想创建并添加编辑功能(),以编辑患者的姓氏、名、出生日期、长度和体重。换句话说,我希望能够在系统Id、姓氏、firtstname等中编辑患者。 我是Java的新手,我需要帮助,因为我被困住了,不知道如何继续。