如何从源代码构建包?

Posted

技术标签:

【中文标题】如何从源代码构建包?【英文标题】:How to build a package from source? 【发布时间】:2016-11-30 16:55:13 【问题描述】:

我正在使用 Windows 7 计算机工作并想使用libpostal 包。不幸的是,它显然不适用于 Windows,所以我正在尝试通过 Cygwin 配置它,而且我很接近。最后一步是从谷歌安装snappy。同样,在 Windows 上不可用...

我的假设(毫无根据)是我可以下载 tarball 并从源代码构建它,对吗?我试过了,我认为它有效?但是a)我不知道如何分辨,b)如果是这样,我不知道如何告诉./configurelibpostal 中找到它。

为了从源代码构建它,我下载了 tarball 并将其保存在 Cygwin 读取为我的家的文件夹中,即C:\cygwin64\home\brittenb\。从那里,我运行bash autogen.sh,它创建了我需要的./configure。所以我运行了它,虽然对检查的一些反应是否定的,但它似乎运行良好。然后我跑了makemake install。似乎没有什么不合适的,所以我的假设是它做了它应该做的事情。我只是不知道从这里去哪里。

这是我运行所有内容后ls 的输出:

aclocal.m4              snappy.cc
AUTHORS                 snappy.h
autogen.sh              snappy.lo
autom4te.cache          snappy.o
ChangeLog               snappy.pc
compile                 snappy.pc.in
config.guess            snappy_unittest.cc
config.h                snappy_unittest.exe
config.h.in             snappy_unittest-snappy_unittest.o
config.log              snappy_unittest-snappy-test.o
config.status           snappy-c.cc
config.sub              snappy-c.h
configure               snappy-c.lo
configure.ac            snappy-c.o
COPYING                 snappy-internal.h
depcomp                 snappy-sinksource.cc
format_description.txt  snappy-sinksource.h
framing_format.txt      snappy-sinksource.lo
INSTALL                 snappy-sinksource.o
install-sh              snappy-stubs-internal.cc
libsnappy.la            snappy-stubs-internal.h
libtool                 snappy-stubs-internal.lo
ltmain.sh               snappy-stubs-internal.o
m4                      snappy-stubs-public.h
Makefile                snappy-stubs-public.h.in
Makefile.am             snappy-test.cc
Makefile.in             snappy-test.h
missing                 stamp-h1
NEWS                    testdata
README                  test-driver

ls /usr/local/bin 没有显示,但 ls /usr/local/include 显示:

snappy.h  snappy-c.h  snappy-sinksource.h  snappy-stubs-public.h

所以...我的问题:它有效吗?为什么./configure in libpostal 说找不到snappy?提前致谢。

【问题讨论】:

你是在 Windows 上构建的吗?如果是这样,请分享:) 不幸的是我没有。我的假设是这只是因为我在我的计算机上没有管理员权限,但我不能确定这一点。 我试试看! 【参考方案1】:

检查来自make install ($?) 的返回码。如果为零,则make install 成功。

snappy 看起来像一个库,所以它可能没有在/usr/local/bin 中安装任何东西。该库可能已安装到/usr/local/lib

【讨论】:

感谢您的建议;我一进办公室就查。假设make install 确实运行正确,我如何确保libpostal 可以找到它?我是否只是将所有文件从 /usr/local/lib 复制到另一个位置,然后对 usr/local/share 等中的文件执行相同操作? libpostal 会自动在 /usr/local/lib 中查找,因此它应该可以工作。 我的假设是,我只是在我的头脑中。我认为我做的一切都是正确的,因为echo $? 返回了0。我将本地libincludeshare/doc 文件夹中的所有文件复制到usr/ 等效项,然后尝试为libpostal 运行./configure。当它说checking for library containing snappy_compress... no时,这一切都会一直运行到最后。根据我在网上收集的信息,除了libsnappy.a 之外,还应该创建一个libsnappy.dll.a 文件。对吗? 没有必要将内容复制到 /usr。检查 config.log,其中记录了详细的错误【参考方案2】:

从 1.0.0 版开始,已删除 snappy 依赖项。我对源代码、make 和 config 进行了更改,以便它可以在 MinGW 上构建。 在我的存储库中获取它: https://github.com/BenK10/libpostal_windows

请注意,这不是完整的源代码,因为并非所有内容都必须更改。我建议将我的更改与官方的 libpostal 发行版合并,以确保您拥有一切。此外,在一些我尚未删除的源文件中还有一些额外的DLLEXPORTs,并且 Makefile 中构建可执行文件(如 address_parser.exe)的部分已被删除,因为在 Windows 上构建这些程序需要一些移植。您可以使用在 Windows 构建中获得的 DLL 和原始源代码作为参考来编写自己的代码。

【讨论】:

以上是关于如何从源代码构建包?的主要内容,如果未能解决你的问题,请参考以下文章

如何从源代码构建一系列 Qt5 子模块?

亲自己主动手从源代码 构建 Groovy 2.3.8 公布包

如何直接从 debian/control 文件安装构建依赖项?

我应该如何构建包含 Cython 代码的 Python 包

如何卸载从源安装的 gcc?

Yocto,从(userspace)包构建过程中删除autotools