Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 简单libtool替代品?_C++_C_Shared Libraries_Libtool - Fatal编程技术网

C++ 简单libtool替代品?

C++ 简单libtool替代品?,c++,c,shared-libraries,libtool,C++,C,Shared Libraries,Libtool,由于对旧式makefile非常满意,我正在寻找libtool的简单替代品。我不想切换到automake,当我试图直接使用libtool时,我总是遇到问题。最新的一个是“不受支持的硬代码属性”,我厌倦了缺乏完整的文档来告诉我这次出了什么问题 我只想编译一堆带有正确标志的.o文件,然后将它们链接到一个共享库中,这样它就可以在尽可能多的平台上工作。有什么东西可以做到这一点,而不是强迫我同时切换所有其他工具吗?我不确定它是否适合您的工作流程,但我建议查看。它可以在Windows、Linux和Mac上运行

由于对旧式makefile非常满意,我正在寻找libtool的简单替代品。我不想切换到automake,当我试图直接使用libtool时,我总是遇到问题。最新的一个是“不受支持的硬代码属性”,我厌倦了缺乏完整的文档来告诉我这次出了什么问题


我只想编译一堆带有正确标志的.o文件,然后将它们链接到一个共享库中,这样它就可以在尽可能多的平台上工作。有什么东西可以做到这一点,而不是强迫我同时切换所有其他工具吗?

我不确定它是否适合您的工作流程,但我建议查看。它可以在Windows、Linux和Mac上运行,不应强迫您更改任何其他工具。不过,你必须自己判断它是否合适。

根据你在对米利安回答的评论中的描述

我只想要一个工具,我告诉他:“给我编译器标志,这样我就可以编译这些n个文件,在共享库中使用,然后给我命令将它们链接在一起”

那么libtool很可能是最简单的工作工具。我不知道还有别的选择

您是对的,将libtool与普通makefile一起使用的文档实际上是不存在的,但是libtool当然不要求您切换到automake。跨平台库是很困难的,您必须为它们付出的代价是libtool。(或者折扣价是libtool+automake+autoconf或CMake或Jam。)

有(与java无关)

它是用C编写的,可以与源代码捆绑在一起

它最初是一个,但在那里工作的人似乎在2004年左右放弃了它

它由FreeRADIUS项目维护人员Alan Dekok接管,他对代码进行了更新,并修复了一些琐碎的问题。我们在FreeRADIUS项目(>=3.0.0)中使用它来完成所有构建时链接。

slibtool(dl.midipix.org/slibtool,git://midipix.org/slibtool)是一个libtool插件替代品,用C编写。单个slibtool二进制文件旨在无缝支持本机构建和交叉构建,该实用工具还提供一些附加功能(安装.la文件是可选的,可选的颜色编码注释等)。下面的最小普通makefile演示了如何使用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.
本机生成,默认(共享库和静态库) 本机生成,仅共享库 本机构建,仅静态库 交叉构建,默认 交叉构建,默认,具有多种颜色
我知道CMake,但这比我想要的要多一些。我不想把我的Makefile系统切换到其他东西,我只想要一个工具,我告诉你:“给我编译器标志,这样我就可以编译这些n个文件,在共享库中使用,然后给我链接它们的命令”。使用automake意味着你必须切换所有工具吗?编写自己的Makefile意味着你必须手动包含对automake自动为你做的许多事情的支持。当我切换到使用automake时,只有一件事发生了变化:我的150行makefiles变得更加有特色10行Makefile.ams。所有其他工具s保持不变。我害怕这个答案……也许有人知道在configure.in中安装libtool的推荐方法是什么,而不是通过automake(即仅使用autoconf,而不是automake)。
$ 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