如何从源代码构建包?
Posted
技术标签:
【中文标题】如何从源代码构建包?【英文标题】:How to build a package from source? 【发布时间】:2016-11-30 16:55:13 【问题描述】:我正在使用 Windows 7 计算机工作并想使用libpostal 包。不幸的是,它显然不适用于 Windows,所以我正在尝试通过 Cygwin 配置它,而且我很接近。最后一步是从谷歌安装snappy。同样,在 Windows 上不可用...
我的假设(毫无根据)是我可以下载 tarball 并从源代码构建它,对吗?我试过了,我认为它有效?但是a)我不知道如何分辨,b)如果是这样,我不知道如何告诉./configure
在libpostal
中找到它。
为了从源代码构建它,我下载了 tarball 并将其保存在 Cygwin 读取为我的家的文件夹中,即C:\cygwin64\home\brittenb\
。从那里,我运行bash autogen.sh
,它创建了我需要的./configure
。所以我运行了它,虽然对检查的一些反应是否定的,但它似乎运行良好。然后我跑了make
和make 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
。我将本地lib
、include
和share/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 发行版合并,以确保您拥有一切。此外,在一些我尚未删除的源文件中还有一些额外的DLLEXPORT
s,并且 Makefile 中构建可执行文件(如 address_parser.exe)的部分已被删除,因为在 Windows 上构建这些程序需要一些移植。您可以使用在 Windows 构建中获得的 DLL 和原始源代码作为参考来编写自己的代码。
【讨论】:
以上是关于如何从源代码构建包?的主要内容,如果未能解决你的问题,请参考以下文章
亲自己主动手从源代码 构建 Groovy 2.3.8 公布包