gpt4 book ai didi

c - 为什么我的 include 指令在 gcc 中不起作用?

转载 作者:行者123 更新时间:2023-12-02 00:07:22 27 4
gpt4 key购买 nike

我正在编写一些使用 Open Dynamics Engine 的代码.我以前在 windows 上使用过这段代码,但现在我正在转向 unix,这样我就可以获得在 unix 环境下使用 C 的经验,所以我不依赖于 visual studio。我将所有内容下载到我的主目录,使用包含的 makefile 构建并尝试了一个演示;一切都很好。我用自己的测试在其中创建了一个目录和一个测试文件。对于我的#include,我指定:

#include ".././ode-0.11.1/include/ode/ode.h"
#include ".././ode-0.11.1/include/drawstuff/drawstuff.h"

因为库只是位于我的主目录中,而不是在标准位置中。我去编译我的代码但是:

.././ode-0.11.1/include/ode/ode.h:28:27: fatal error: ode/odeconfig.h: No such 
file or directory

查看 ode.h,它包括一堆其他头文件,它们都位于同一目录中,但使用括号语法而不是引号。我猜这与 gcc 无法找到其他 header 的原因有关。我查看了 makefile,但还不足以弄清楚我的问题是什么。为什么我的编译不起作用?详细/彻底的答案将不胜感激,因为我想了解这一切是如何工作的(链接、包含、制作等)。

编辑:所以我弄清楚了如何正确地包含 header ,现在我需要弄清楚如何链接到函数的库定义...

Edit2:仍然不知道如何链接到我的代码。编译的静态库被转储到 '~/ode-0.11.1/ode/src/.libs' 和 '~/ode-0.11.1/drawstuff/src/.libs' 中用于绘图函数。

Edit3:我想我明白了。我没有正确使用 -l 选项,它似乎必须在引用我正在链接的库中的函数的文件之后。

最佳答案

需要在编译行中设置include目录

例如

gcc -I.././ode-0.11.1/include

或者在这个cas中更好的是绝对路径

然后在代码中包含 like

#include "ode/ode.h"
#include "drawstuff/drawstuff.h"

因此,将从同一目录访问 ode.h 中包含的所有文件。您的示例 ode/odeconfig.h 会被发现,因为 ode 是 -I 参数中包含路径的子目录。

链接是相似的,但这两部分都是在命令行上完成的。这两部分是由 -l 变量给出的文件和由 -L 参数给出的 lib 所在的目录。此外,如果库是 libode.dylib,那么您只需输入名称,例如颂歌。

所以命令行是

gcc -lode -L.././ode-0.11.1/lib

关于c - 为什么我的 include 指令在 gcc 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com