【问题标题】:makefile no such file or directory: libxml/xmlstring.hmakefile 没有这样的文件或目录:libxml/xmlstring.h
【发布时间】:2014-12-09 16:24:54
【问题描述】:

我不习惯制作 makefile。我的旧项目有所有的makefile,我正在从头开始做一个小测试,其中包含很多我不习惯的罐装lib依赖项。好几年没看makefile了。

我有一个名为 libopcTest 的目录,其中包含以下内容:

LibOPCTest.cc
LibOPCTest.h
makefile

makefile 里面有这个:

INC=-I/usr/include/libxml2/libxml
LIB=-L/usr/include/libxml2/libxml
all: LibOPCTest.exe

LibOPCTest.exe: LibOPCTest.o
>tab> gcc -o LibOPCTest.exe LibOPCTest.o

LibOPCTest.o: LibOPCTest.cpp
>tab> gcc -c $(INC) $(LIB) LibOPCTest.cpp

clean:
>tab> rm LibOPCTest.o LibOPCTest.exe

我查看了 /usr/include/libxml2/libxml,其中确实包含 xmlstring.h。我在 opc.h 中没有看到 libxml 引用,但显然这就是它的来源,大概在一个包含文件中,比如 config.h。

另外,我们有 LibOPCTest.cpp,其中 #includes <opc/opc.h> 和它自己的 .h 文件。

main 在 LibOPCTest.cpp 中。

当我在 Linux 命令提示符下键入 make 时,我收到以下错误:

In file included from /usr/include/opc/opc.h:36:0, from LibOPCTest.cpp:1:
/usr/include/opc/config.h:37:30: fatal error: libxml/xmlstring.h: no such file or directory.

我不应该在 makefile 中将带有 LIB 和 INC 定义的 libxml 指向 libxml 吗?我认为我不应该向 opc.h 添加任何内容,包括构建它,因为它是一个罐装库。

我在看这个makefile example,我想我有我需要的一切(可能没有,因为它没有建立)。

我知道这是一个基本问题,但希望有人能提出好的建议。感谢您提前做好准备!

【问题讨论】:

  • 如果您告诉 GCC 在 /usr/include/libxml2/libxml 中查找标头,那么它会。而且那里没有libxml/xmlstring.h 文件。您可能想改写-I/usr/include/libxml2。 (编译器总是是正确的,在将随机代码敲入 Makefile 之前,您需要考虑一下事情的含义。)此外,您的 -L 标志是无稽之谈;为什么链接器会关心头文件?那很可能是-L/usr/lib 或者它的子目录。
  • 其实用pkg-config --cflags libxml-2.0和pkg-config --libs libxml-2.0就行了
  • @011c - makefile 中有吗?在哪里?我修复了 TheParamagneticCroissant 的建议,它有大量未定义的对愚蠢的东西的引用,比如 operator delete,以及 xmlStrcmp、xmlTextREaderConstValue 等......显然有些不对劲。
  • 在 Paramagnet 的回答之后,您的编译时错误可能已经消失了。您现在得到的是链接时间错误。只需为指向您的 libxml 和默认库路径的 LIB 变量提供适当的参数即可
  • 感谢您的想法!

标签: c++ linux makefile


【解决方案1】:

我们决定暂停 libOPC 的 Linux 版本,因为没有一个好的 64 位版本,而且需要大量工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多