0 引言
转入linux/VSCode编程之后,迫切了解到有必有较为系统地学习一下VSCode中相关配置文件的写法。下面将分为 linux/g++编译指令、.json文件关键词/替换变量的意义、编译链接过程原理分析几个部分进行介绍,并以opencv为例,将上述知识综合运用。
1 linux/g++编译指令介绍
参照BattleScars的博客,摘取其中对本文有用的部分进行运用,博客链接如下,质量非常之高,表示感谢!!!
https://www.cnblogs.com/battlescars/p/cpp_linux_gcc.html
(1)针对一个完整的、单一的.cpp文件,helloworld.cpp,其编译指令如下。
$ g++ helloworld.cpp
编译器 g++ 通过检查命令行中指定的文件的后缀名可识别其为 C++ 源代码文件。编译器默认的动作:编译源代码文件生成对象文件(object file),链接对象文件和c++ 库中的函数得到可执行程序。然后删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。程序的运行方式如下,
$ ./a.out
如果要指定可执行程序的文件名,使用 "-o"参数,如下,
$ g++ -std=c++11 helloworld.cpp -o helloworld
暂时了解到这里就可以了,在编译多个源文件生成可执行程序时,可参照上述博客内容。
(2)g++相关参数的意义
参考了此贴,表达感谢!
https://blog.csdn.net/lin_008/article/details/77600483
1 g++ -I[path](大写的i,即include path) 编译程序按照指定的路径去搜索头文件,指定的路径为第一个去寻找的路径,eg
g++ -I/usr/include
2 g++ -L[lib](大写的L) 编译程序按照-L指定的路径进去寻找文件,一般的在-L的后面可以一次用-l指定多个库文件 ,eg
g++ -L/usr/lib/x86_64-linux-gnu
3 g++ -l [掐头去尾的库名](小写L) 编译程序到系统默认路径寻找库文件,库文件的格式如下。
g++ -lz #库文件的名称为libz.so,库名为z
如果找不到,那么到当前目录下找;如果还找不到,那么到LD_LIBRARY_PATH等环境变量置顶的路径中去查找;如果仍然找不到,那么编译程序提示找不到库。
2 .json文件参数的意义
VSCode采用.json结尾的文件作为配置文件,包含关键词和相关参数两个部分。以本人编写的opencv中的参数文件为例进行解释,如下。
(1)launch.json
为了能够debugging,需要生成一个launch.json文件。
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}.out", "miDebuggerPath": "/usr/bin/gdb", "preLaunchTask":"build", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
原文地址:https://www.cnblogs.com/ghjnwk/p/10415294.html