出于某些原因,我需要在浏览器中使用PDF2SVG(https://github.com/dawbarton/pdf2svg);为了实现这一点,我想使用Emscripten。所以我按照他们网站上描述的步骤进行了操作。
但我总是收到这个错误:
J = [df/da df/db]
我下载了两个必需的库:
Poppler:https://poppler.freedesktop.org/poppler-0.5.4.tar.gz
卡里奥:https://www.cairographics.org/releases/cairo-1.2.6.tar.gz
并提取到“pdf2svg”目录。
我该怎么做才能传递错误?
答案 0 :(得分:0)
<强>声明强>
我决定写一个答案,即使这不会给你一个答案 解决你当前的问题。评论部分非常有限,我们 无法进行适当的讨论,也无法在评论中提供足够的细节。
修改强>
我发现了answer。这也可以帮助您解决问题
**结束编辑**
您的问题中的一个主要问题是我们没有足够的信息 你的系统:我不知道你正在使用哪个发行版,哪些包是 安装,如何安装它们(手动与包管理器),无论你是否已经安装 安装了开发包等。
大多数情况下,使用的方法是安装开发包 包经理。
今天许多软件包都支持pkg-config
,这是一个打印的工具
用于编译和构建包的必要CFLAGS
和LDFLAGS
。可悲的是
模块名称有时可能在分布之间变化。比如我的
系统我做了以下以获取包的名称
$ pkg-config --list-all | grep glib
...
glib-2.0 GLib - C Utility Library
$ 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
其中显示我应该使用哪个CFLAGS
和哪个LDFLAGS
来使用glib。
通常你会做这样的事情:
$ gcc main.c -omain `pkg-config glib-2.0 --cflags --libs`
现在我在评论中说过我个人没有使用
emcc
,所以我 没有参数,但猜测它会有相同或非常相似的 参数。每当出现错误时我都会重命名包含位置,因此修复了很多位置错误,但这次我遇到了以下错误:
"error: parameter named 'glib_major_version' is missing"
据我所知,所有常量都在
configure.ac
文件中定义,但似乎编译器没有加载它 自动归档。如何强制编译器在编译时包含configure.ac
文件?
现在我们正在进入GNU Build System的另一个领土, 也称为Autotools。我不知道你对它有多了解,但总是在 你的问题,那里存在一些知识差距。
编写软件时,您可以手动编译,输入编译
自己命令,或者您可以使用自动化过程的软件。 make
是
其中之一。虽然自己写一个Makefile
是完全可以的,但它可以
对于不同的大型项目维护Makefile
非常具有挑战性
建立选项,不同的目标,交叉编译等。人们使用时
另一个允许您动态创建Makefile
的软件。在里面
过去许多开源项目,特别是Free Software Foundation的项目
与GNU一样,使用 GNU Build System 构建他们的软件 1 。
使用GNU Build System的项目有一组独特的文件和脚本
帮助程序员维护Makefile
并使用户易于编译
并安装它们。通常作为用户执行:
$ tar xpzf someproject-0.0.1.tar.gz
$ cd someproject-0.0.1
$ ./configure --prefix=/usr
$ make
$ make install
configure
脚本接受更多参数,您可以使用它控制哪些参数
库支持,启用/禁用功能,交叉编译选项等。
configure
将评估您的系统,确定您拥有哪个编译器
库及其安装的版本等。如果一切顺利,那么
它动态创建Makefile
(模板外),以便您可以运行
make
命令。 configure
不仅会创建必要的Makefile
,还会创建
还可以在构建软件时使用其他文件。
这些辅助文件可以是任何内容,主要是定义的config.h
等文件
宏,以便包含config.h
的代码可以查看哪些选项可用。
glib可能包含其他文件,例如声明
glib_major_version
。 2
那究竟是什么configure.ac
?现在,如果你打开一个configure
脚本,你就可以了
大多数人看到大量的代码,这些代码并不完全是用户友好的阅读。那是
因为configure
文件通常不是手写的,而是动态的
由维护者生成。 configure.ac
是您必须放置的地方
将影响configure
文件的规则:类似于哪种语言(C,C ++,
别的东西),哪些库,检查依赖性等等。一切都在
简单的语法。 3
命令autoconf
读取configure.ac
并生成新的configure
可以在tarball中发送的文件。这个过程显然更复杂
除此之外,还有其他步骤需要做。通常autoreconf -i
根据{{1}}和所需的所有模板重建configure
configure.ac
{(例如configure
个模板,来自Makefile.in
文件)。
由于您遇到的错误,我告诉您这一切。像我一样
在开始时说,我不知道你是如何安装glib的。如果有开发者
您系统的库包,您应该安装它们和您的
Makefile.am
基于emcc
4 告诉你的正确论据。
如果这不起作用且你一直遇到问题,那么我建议你
下载glib的tarball并自己编译。
使用pkg-config
设置路径
它将安装在哪里,基本上在你的家庭帐户的某个地方,所以
你不会意外地覆盖系统范围的glib安装。
然后使用./configure --prefix=/home/youruser/projects/whatever
构建glib并将其与make
一起安装。然后你必须
传递make install
的正确路径。
文件emcc
根本不应该与您有关,除非您想要更改
configure.ac
文件中的内容。在这种情况下,你必须编辑
configure
,进行更改,运行configure.ac
重新创建
autoreconf -i
个文件。然后,您可以再次致电configure
。
但我非常怀疑你必须做这些事情。
1 现在你看到很多使用Cmake的开源项目, Scons等等。
2 也许是宏或内联函数。我没有调查过 构建glib的文件。
3 它可能变得非常复杂,但仍然更容易阅读
./configure && make && make install
文件本身。
4 在非默认路径中安装库时(如configure
或)
/usr
i),您必须告诉/usr/local
在哪里找到pkg-config
个文件
包含.pc
读取的信息。 pkg-config
通常会把这些
make install
中的文件(除非您通过${prefix}/share
或--datadir
--datarootdir
)的选项。
所以如果你做了
configure
然后你必须像这样打$ ./configure --prefix=/home/david/mylibs && make && make install
:
pkg-config