首页 > 其他分享 >g++编译多文件

g++编译多文件

时间:2023-04-13 14:01:10浏览次数:61  
标签:文件 头文件 ++ C++ 编译 cpp

一、问题引入

在使用VSCode编写C++程序过程中,自定义一个 *.h 文件,其中包含了函数声明,在主函数中引入头文件后,调用头文件对应C++文件中的方法,出现了undefined reference问题

二、解决过程

分析问题:主要是 预处理时,编译器没有找到stock.cpp的位置,导致 undefined reference问题

直接通过g++命令行:g++ -g .\stock_operate.cpp ..\inc\stock.cpp -o stock_operate

三、反思总结

涉及到gcc/g++的命令行编译,应该熟悉编译的参数功能,才能合理修改Visual Studio Code中的编译参数。

以下是一些常用的g++编译器参数及其功能:

  • -o: 指定输出文件名。例如,g++ test.cpp -o myprog将编译test.cpp并将可执行文件命名为myprog。
  • -c: 编译源代码但不执行链接操作,生成目标文件(.o文件)。
  • -Wall: 开启所有警告信息。
  • -O: 启用优化选项。有多个级别的优化可以选择,例如-O1表示启用较基本的优化级别,而-O3则表示使用更高级别的优化。
  • -g: 生成调试信息。这可以帮助开发人员在代码出现问题时进行调试。
  • -std=c++XX: 指定C++语言的版本。例如,-std=c++11指定使用C++11标准。
  • -I: 添加头文件搜索路径。例如,-I /usr/local/include表示在/usr/local/include目录中查找头文件。
  • -L: 添加库文件搜索路径。例如,-L /usr/local/lib表示在/usr/local/lib目录中查找库文件。
  • -l: 链接外部库文件。例如,-lboost_system表示链接名为libboost_system.a或者libboost_system.so(取决于系统)的库文件。

除此之外,g++还提供了很多其他的编译器参数,可以通过输入man g++查看完整的帮助文档。

四、参考引用

VSCode编写C++自定义头文件undefined reference异常问题

标签:文件,头文件,++,C++,编译,cpp
From: https://www.cnblogs.com/caojun97/p/17306608.html

相关文章

  • S210电脑 Hackintosh 黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板S210处理器i9-10980HK已驱动内存64G(2*32GDDR43200)已驱动硬盘Intel760p512GB已驱动显卡IntelUHD630已驱动声卡瑞昱@英特尔HighDefinitionAudio控制器已驱动网卡英特尔EthernetCon......
  • Linux系统之源码编译部署Redis数据库
    (Linux系统之源码编译部署Redis数据库)一、Redis数据库介绍1.Redis简介Redis是完全开源的,遵守BSD协议,是一个高性能的key-value数据库。2.Redis特点Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-va......
  • C++从0到1 —— 跟着我一定能学会
    1.阅读须知以下所有的内容都属于我的个人总结与思考,但同时又想作为一种资源供大家学习、参考。文章的水平和质量可能不是很高,也有可能内容有些小错误,希望各位读者能够私信我指出错误。C++的部分分为三个版块:C++基础知识部分、STL部分、C++11特性以及其他。2.C++基础知识 ......
  • Understanding the different flavors of Clang C and C++ compilers in Windows
    https://blog.conan.io/2022/10/13/Different-flavors-Clang-compiler-Windows.htmlThisarticlewillexplainthedifferentflavorsofClangCandC++compileryoumightencounterinWindows,andgiveyousomesuggestionsaboutwhichonesmightberightforyo......
  • JAVA使用OpenOffice文件转换
    下载jar包maven中央仓库包不支持docx文件所以不建议使用。jar包是为了方便链接下载链接:https://nchc.dl.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip 解压后找到:jodconverter-2.2.2\jodconverter-2.2.2\lib\jodconverter-2.2.2.jar放......
  • 如何从tar.gz包中,提取某些文件?
    方法非常的简单。 语法tar-zxvftar.gz包的名字提取的文件1提取的文件2提取的文件3提取多个文件,多个文件之间用空格就可以了 示例 有一个tar.gz的包:linux-amd64-filebrowser.tar.gz 包中包含的文件:[root@node142~]#tar-tvflinux-amd64-fil......
  • os.walk获取目录中所有文件
    一.遍历获取目录及子目录下的文件名os.walk(filepath,topdown=False)filepath:需要遍历的目录地址,返回一个三元素的元组(root,dirs,files)root是当前正在遍历父文件夹的地址dirs是一个列表,内容是父目录中所有的文件夹的名字(不包括子目录下的文件夹)files是一个列表,内容......
  • 查看xxx.apk文件的AndroidManifest.xml操作步骤:
    查看xxx.apk文件的AndroidManifest.xml操作步骤: 1.使用7.zip打开xxx.apk文件,且将该文件夹中的AndroidManifest.xml文件复制出来。 2、AndroidManifest.xml文件复制到AXMLPrinter2文件夹中。 3、在AXMLPrinter2文件夹输入cmd进入命令行模式。 4、输入java-jarAXMLPrinter2.jarAn......
  • Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Bui
    https://zhuanlan.zhihu.com/p/471661231下载软件链接:https://pan.baidu.com/s/12hhCEKnjr2Qq-H3sHuQiXQ?pwd=6g0v提取码:6g0v安装退出虚拟环境,重新进入pip安装对应包......
  • C++性能优化——能用array就不要用unordered_map作为查询表
    unordered_map需要哈希值计算和表查询的开销,当key值为整数且连续,直接用数组作为查询表具有更高的效率。#include<iostream>#include<chrono>#include<unordered_map>usingnamespacestd;longlongcount=0;constexprintN=10;voidtimeMeasure(void(*f)()){a......