使用Emscripten编译PDF2SVG时出现致命错误

使用Emscripten编译PDF2SVG时出现致命错误,c,pdf,svg,emscripten,C,Pdf,Svg,Emscripten,出于某些原因,我需要在浏览器环境中使用PDF2SVG();为了实现这一点,我想使用Emscripten。因此,我遵循了他们网站中描述的步骤 但我总是犯这样的错误: tests/pdf2svg/pdf2svg.c:24:10: fatal error: 'glib.h' file not found #include <glib.h> ^~~~~~~~ 1 error generated. ERROR:root:compiler

出于某些原因,我需要在浏览器环境中使用PDF2SVG();为了实现这一点,我想使用Emscripten。因此,我遵循了他们网站中描述的步骤

但我总是犯这样的错误:

    tests/pdf2svg/pdf2svg.c:24:10: fatal error: 'glib.h' file not found
    #include <glib.h>
             ^~~~~~~~
    1 error generated.
    ERROR:root:compiler frontend failed to generate LLVM bitcode, halting
tests/pdf2svg/pdf2svg.c:24:10:致命错误:“未找到glib.h”文件
#包括
^~~~~~~~
生成1个错误。
错误:根:编译器前端无法生成LLVM位代码,正在停止
我下载了两个必需的库:
波普勒:
卡里奥:

并解压缩到“pdf2svg”目录中


我必须做什么才能通过该错误?

免责声明

我决定写一个答案,即使这不会给你一个答案 您当前问题的解决方案。评论部分非常有限,我们 无法进行适当的讨论,我也无法在评论中给出足够的细节

编辑

我找到了这个。这也可能有助于解决您的问题

**结束编辑**


你问题中的一个主要问题是我们没有足够的信息 您的系统:我不知道您使用的是哪个发行版,哪些软件包是 已安装,如何安装(手动安装与软件包管理器安装),是否 安装了开发包等

大多数情况下,方法是使用 包管理器

今天的许多软件包都包含对的支持,这是一个打印 编译和构建包所需的
CFLAGS
LDFLAGS
。悲哀地 模块名称有时可能因发行版而异。比如我的 系统我做了以下操作来获取包的名称

$pkg config--列出所有的| grep glib
...
glib-2.0 glib-C实用程序库
$pkg config glib-2.0--cflags
-I/usr/include/glib-2.0-I/usr/lib64/glib-2.0/include
$pkg config glib-2.0--libs
-lglib-2.0
它向我显示了使用glib应该使用哪个
CFLAGS
和哪个
LDFLAGS

通常,您会执行以下操作:

$gcc main.c-omain`pkg config glib-2.0--cflags--libs`
现在我已经在评论中声明,我个人没有使用过
emcc
,所以我 不知道它的参数,但猜测它将具有相同或非常相似的参数 参数

每当发生错误时,我就重命名了包含位置,因此修复了许多位置错误,但这次我遇到了以下错误:

"error: parameter named 'glib_major_version' is missing"
据我所知,所有常量都是在
configure.ac
文件中定义的,但编译器似乎没有加载这些常量 自动归档。如何强制编译器在编译时包含
configure.ac
文件

现在我们正在进入另一个领域,那就是, 也称为自动工具。我不知道你对这件事了解多少,但基于 你的问题是,这里有一些知识空白

编写软件时,您可以手动编译,也可以键入编译代码 命令自己,或者您可以使用自动化过程的软件<代码>制作是 其中之一。虽然自己编写一个
Makefile
非常好,但它可以 维护一个
Makefile
对于具有不同功能的大型项目来说是非常具有挑战性的 构建选项、不同的目标、交叉编译等。这就是人们使用 还有一个软件,它允许您动态创建
Makefile
s。在 过去的许多开源项目,特别是 例如,使用GNU构建系统来构建他们的软件1

使用GNU构建系统的项目有一组独特的文件和脚本 帮助程序员维护
Makefile
s并使用户易于编译 并安装它们。作为用户,您通常会:

$tar xpzf someproject-0.0.1.tar.gz
$cd项目-0.0.1
$./configure--prefix=/usr
$make
$make安装
configure
脚本接受更多的参数,您可以使用这些参数控制 要支持的库、启用/禁用功能、交叉编译选项等。
configure
将评估您的系统,以确定您拥有哪个编译器,哪个 库及其安装版本等。如果一切顺利,则 它动态创建一个
Makefile
(从模板中),以便您可以运行
make
命令
configure
不仅创建必要的
Makefile
s,而且 还包括构建软件时可能使用的其他文件

这些帮助文件可以是任何文件,主要是定义 宏,以便包括
config.h
在内的代码可以查看哪些选项可用。 glib可能包括其他文件,例如declare
glib\u major\u版本
.2

那么,究竟什么是
configure.ac
?现在,如果打开
configure
脚本,您将 大多数情况下,我们会看到大量的代码,这些代码对用户来说并不友好。就是 因为
configure
文件通常不是手工编写的,而是动态编写的 由维护人员生成。
configure.ac
是您必须放置 将影响<代码>配置< /C>文件的规则:像哪种语言(C,C++) 其他),哪些库,检查依赖项等等,所有这些都是非常复杂的 简单语法

命令
autoconf
读取
configure.ac
并生成一个新的
configure
可以在tarball中装运的文件。这个过程显然更加复杂 除此之外,您还需要执行其他步骤。通常
autoreconf-i
基于
configure.ac
和所需的所有模板重建
configure
configure
(如
Makefile.in
模板中的
Makefile.am
文件)

我告诉你这一切是因为你犯了错误