完美地满足于旧式的Makefile中,我要寻找一个简单的替代将libtool。我不想切换到automake的,和我一直运行到与libtool的问题,当我尝试直接使用它。最新的一个是“不支持硬编码属性”,和我越来越厌倦了缺乏完整的文档,只是告诉我,什么是错的这个时候...

我只想编译一堆用正确的标志.o文件,然后将它们连接成一个共享库,使得它可以在尽可能多的平台,尽可能。有什么在那里,做到了这一点,并没有强迫我转我的所有其他工具在同一时间?

有帮助吗?

解决方案

jlibtool (其无关用java)。

它是用C语言编写,并且可以直接与您的源捆绑。

这原本是一个 Apache项目,但不管是谁的工作它似乎有废弃它围绕2004

这是由FreeRADIUS的项目维护者艾伦Dekok,谁现代化的代码,并修正了一些琐碎的问题接管。我们使用它的FreeRADIUS的项目(> = 3.0.0)来完成所有的编译时间链接。

其他提示

我不知道这是否会适合你的信息流,但我建议你在看 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top