写点什么

VSCode 同时编译多个 C 文件

作者:codists
  • 2023-07-23
    广东
  • 本文字数:782 字

    阅读完需:约 3 分钟

一.环境说明

1.系统:Ubuntu 22.04.2 LTS

2.Visual Studio Code: 1.80.1

二.问题描述

今天使用 VSCode 编译《Programming Abstractions In C》书中的 gymjudge.c 代码时遇到错误,错误提示为:


(base) codists@pc:~/projects/Programming-Abstractions-In-C$ cd "/home/codists/projects/Programming-Abstractions-In-C/chapter2/" && gcc gymjudge.c -o gymjudge -lm && "/home/codists/projects/Programming-Abstractions-In-C/chapter2/"gymjudge/usr/bin/ld: /tmp/cc5uqaX4.o: in function `GetScore':gymjudge.c:(.text+0x81): undefined reference to `GetReal'/usr/bin/ld: /tmp/cc5uqaX4.o: in function `main':gymjudge.c:(.text+0x173): undefined reference to `GetInteger'collect2: error: ld returned 1 exit status
复制代码



三.问题分析

因为 gymjudge.c 文件里面引入了”simpio.c”文件里面“GetReal”、“GetReal”方法,但是我们可以看到错误提示中的“gcc gymjudge.c -o gymjudge -lm”只编译了 gymjudge.c 一个文件,所以找不到“GetReal”、“GetReal”方法,应该将”simpio.c”一起进行编译。

在命令行操作我们可以将两个 c 文件写到一起如“gcc gymjudge.c simpio.c -o gymjudge -lm”,但是现在是在 VSCode 里面操作,那么在哪里设置这个命令呢?在 setting.json 文件中设置。

四.解决方法

(1)打开设置(快捷键:Ctrl + ,)


(2)Open Settings(JSON)


(3)修改配置

将:

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -lm && fileNameWithoutExt",
复制代码

修改为:

"c": "cd $dir && gcc *.c -o $fileNameWithoutExt -lm && fileNameWithoutExt",
复制代码



修改完之后保存,最后重启 VSCode 即可。

五.总结

通过解决该问题可以得到两个收获:(1)掌握了如何通过多个 c 源文件编译出一个可执行文件。(2)了解了 VSCode 可视化操作背后所执行的命令,在何处配置这些命令以及如何配置这些命令。


欢迎搜索及关注:编程人

发布于: 刚刚阅读数: 3
用户头像

codists

关注

公众号:编程人 2021-01-14 加入

Life is short, You need Python

评论

发布
暂无评论
VSCode同时编译多个C文件_Visual Studio Code_codists_InfoQ写作社区