简单libtool的选择吗?
-
24-09-2019 - |
题
完美地满足于旧式的Makefile中,我要寻找一个简单的替代将libtool。我不想切换到automake的,和我一直运行到与libtool的问题,当我尝试直接使用它。最新的一个是“不支持硬编码属性”,和我越来越厌倦了缺乏完整的文档,只是告诉我,什么是错的这个时候...
我只想编译一堆用正确的标志.o文件,然后将它们连接成一个共享库,使得它可以在尽可能多的平台,尽可能。有什么在那里,做到了这一点,并没有强迫我转我的所有其他工具在同一时间?
其他提示
我不知道这是否会适合你的信息流,但我建议你在看 CMake的。它适用于Windows,Linux和Mac,不应该强迫你改变你的任何其他工具。你必须虽然自己判断其适用性。
由于在评论你的描述Milliams的回答,
我只想一个工具,我告诉:“给我的编译器标志,这样我可以编译这n个文件的共享库中使用,然后给我的命令将它们连接在一起”,
然后libtool的很可能是该作业的简单工具。我知道没有其他选择的。
您是正确的,使用的libtool使用普通的makefile文件是几乎不存在,但可以肯定的libtool不要求你切换到automake的。跨平台库是困难的,你必须为他们付出的代价是libtool的。 (或者,也许折扣价格的libtool +的automake + autoconf的或CMake的卡纸或)
slibtool(dl.midipix.org/slibtool,GIT中://midipix.org/slibtool)是libtool的简易替换,用C语言编写的单个slibtool二进制旨在无缝支持本地和交叉构建,和效用还提供了一些附加的功能(安装.la文件是可选的,任选的颜色编码的注释等)。以下最小平原生成文件演示如何(交叉)使用slibtool构建的文库。
CC = cc
LIBTOOL = slibtool
DESTDIR = destdir
all: libfoo.la
a.lo:
$(LIBTOOL) --mode=compile --tag=CC $(CC) -c a.c
libfoo.la: a.lo
$(LIBTOOL) --mode=link --tag=CC $(CC) -o libfoo.la -rpath /lib
install: all
mkdir -p destdir
$(LIBTOOL) --mode=install cp libfoo.la $(DESTDIR)
# the -rpath argument is required for semantic compatibility with libtool.
原始构建,默认(二者共享库和静态库)
$ make
$ make install
原始构建,共享库仅
$ make LIBTOOL=slibtool-shared
$ make install
原始构建,静态库仅
$ make LIBTOOL=slibtool-static
$ make install
交叉的构建,默认
$ make CC=some-target-tuple-gcc
$ make install
交叉编译,默认情况下,有很多的颜色
$ make LIBTOOL=dlibtool CC=some-target-tuple-gcc
$ make install