我正在尝试编译一个使用HDF4库的程序。我在/usr/local/的计算机上安装了HDF4,我已经确认所有必要的脚本,包括文件和库已经安装,并且所有环境变量都设置正确。我创建了一个Makefile,它将我的两个C文件编译成目标文件,然后将它们链接在一起。当我编译第一个C文件"readHDFfuncs.c"时,编译器告诉我所有被调用的HDF4函数都没有被声明。这应该不会发生,因为我的h4cc编译器正确地包含了正确的目录。
我将h4cc命令设置为-echo,并跟踪了编译执行。一切似乎都是正确的,但是由于某种原因,函数声明没有通过。H4cc是一个GCC包装器,它的主要功能是处理包含路径。
我已经创建了一个github来展示这些文件。
https://github.com/LandonClipp/HDFhelp/tree/masterIncluded是make命令的输出(记住,它包括h4cc的-echo选项)、Makefile本身、两个C文件、一个头文件和include目录的内容。我真的很讨厌把所有这些都丢给别人并要求解决方案,但我花了很多时间试图弄清楚这个问题,如果有人能指出他们看到的任何东西,我将非常感激。谢谢!
您是否尝试将-I
附加到makefile中的文件路径上?这在导入目录时是必要的。不过也可能有其他问题。
INCLUDE=-I/usr/local/hdf-4.2.12/hdf4/include
LIB=-I/usr/local/hdf4.2.12/hdf4/lib
参考https://www.gnu.org/software/make/manual/make.html#Flavors