我已经在 Mac 上使用 GCC 成功编译了一个 C 程序,并直接从源代码安装了 GD2 库。现在我尝试使用通过 MacPorts 安装的 GD2 库来执行此操作,但出现以下错误消息:
plotgeometry.c:5:16: error: gd.h: No such file or directory
plotgeometry.c: In function 'PlotGeometry':
plotgeometry.c:28: error: 'gdImagePtr' undeclared (first use in this function)
plotgeometry.c:28: error: (Each undeclared identifier is reported only once
plotgeometry.c:28: error: for each function it appears in.)
plotgeometry.c:28: error: expected ';' before 'im'
plotgeometry.c:29: warning: ISO C90 forbids mixed declarations and code
plotgeometry.c:748: error: 'im' undeclared (first use in this function)
plotgeometry.c:748: warning: implicit declaration of function 'gdImageCreate'
plotgeometry.c:752: warning: implicit declaration of function 'gdImageColorAllocate'
plotgeometry.c:780: warning: implicit declaration of function 'gdImageSetPixel'
plotgeometry.c:801: warning: implicit declaration of function 'gdImagePng'
plotgeometry.c:809: warning: implicit declaration of function 'gdImageDestroy'
我想,我需要为GCC提供GD2库的路径。
gd.h
可在以下目录中找到
$ find /opt/local/ -name 'gd.h'
/opt/local//include/gd.h
/opt/local//var/macports/software/gd2/2.0.35_7/opt/local/include/gd.h
我已将
/opt/local/include
添加到我的 $PATH
变量中,但没有帮助。我是否需要使用该路径来指定附加参数到 GCC 的路径?
你能帮我解决这个问题吗?
您不使用$PATH。通过
-I
命令行选项将其添加到 gcc。对于直接构建:
gcc -I/opt/local/include ...
对于品牌:
CPPFLAGS='-I/opt/local/include' make
您还需要在链接时引用该库。使用
-L/opt/local/lib -lgd
或通过 make:
CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib' LDLIBS='-lgd' make
当然,您可以在 Makefile 中设置这些变量。
您需要将
-I/opt/local/include
添加到编译器参数(而不是仅由 shell 用于查找可执行文件的 $PATH)。