标签: automake

autoconf 中的库版本字符串

在 autoconf 中首次指定库版本的正确方法是什么?该库处于不稳定状态,我想在它0.1.0为公共 API 准备好之前它应该是1.0.0. 所以我把以下内容configure.ac

AC_SUBST([FOO_SO_VERSION], [0:1:0])
AC_SUBST([FOO_API_VERSION], [0.1.0])
Run Code Online (Sandbox Code Playgroud)

还有Makefile.am

libfoo_la_LDFLAGS = -version-info $(FOO_SO_VERSION)
Run Code Online (Sandbox Code Playgroud)

虽然我得到了这个文件:

libfoo.so.0.0.1
Run Code Online (Sandbox Code Playgroud)

c++ automake autoconf autotools

1
推荐指数
1
解决办法
634
查看次数

'-std=c++11' 对 C++/ObjC++ 有效,但对 C 无效

我正在尝试使用以下配置构建 json-c:

./configure --target=arm-linux-androideabi --host=arm-linux-androideabi \
            --build=x86_64-unknown-linux-gnu
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

cc1: error: command line option '-std=c++11' is valid for C++/ObjC++ but not for C [-Werror]
Run Code Online (Sandbox Code Playgroud)

我试图添加--disable-std-c++11--disable-std-cpp11到配置,但我总是遇到同样的问题。

如何解决?

c c++ automake makefile c++11

1
推荐指数
1
解决办法
1万
查看次数

Mac OSX。我在哪里可以下载 glibtool?

我正在尝试为 mac设置守望者。如网站所述,我需要安装 glibtool。

谁能提供一个我可以下载 glibtool 的链接?

我需要能够从它的源代码下载它,我能找到的唯一解决方案是使用 brew。

我不想使用 brew。

谢谢你。

macos automake autoconf libtool watchman

1
推荐指数
1
解决办法
1135
查看次数

创建一个与另一个目标的硬链接的automake目标

我有一个系统,可以创建5个可执行文件.所有可执行文件都是相同的程序,但它们都是指向同一文件的硬链接.我不知道如何用automake干净利落地做到这一点.有办法吗?我没有问题实际制作文件---但他们没有正确安装.我对如何设置它有点傻眼.

谢谢.

automake autoconf

0
推荐指数
1
解决办法
298
查看次数

在 automake 中转义程序名称

如何在 GNU automake 中转义程序名称?例如,以下工作:

lib_LTLIBRARIES = libc.la

libc_la_SOURCES = source.cc
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在程序名称上使用符号“加号”(+),如下所示:

lib_LTLIBRARIES = libc++.la

libc++_la_SOURCES = source.cc
Run Code Online (Sandbox Code Playgroud)

Make 将回应:

make[1]: *** No rule to make target 'libc++.c', needed by 'libc++.lo'.  Stop.
Run Code Online (Sandbox Code Playgroud)

似乎没有找到 SOURCES 变量。我尝试在加号前面加上美元 ($)、反斜杠 (\) 和双反斜杠 (\\),但没有成功。

automake

0
推荐指数
1
解决办法
336
查看次数

如果我的系统支持某些头文件或cpp功能,"configure"脚本如何检测?

我正在尝试在我的RHEL 5机器上编译google rpc(grpc),配置脚本检查并抛出此错误:

configure: error: sched_yield was not found on your system
Run Code Online (Sandbox Code Playgroud)

我检查了config.log文件,发现是这样的:

| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char sched_yield ();
| int
| main ()
| {
| return sched_yield ();
|   ;
|   return 0;
| }
configure:19729: result: …
Run Code Online (Sandbox Code Playgroud)

c++ automake header configure include

0
推荐指数
1
解决办法
124
查看次数

automake 将目标文件放在库之后

src/Makefile.am

myproj_CXXFLAGS = -fopenmp -O3 -std=c++17 -g -I/home/software/miniconda3/include -I$(top_srcdir)/external
myproj_LDFLAGS = -L/home/software/miniconda3/lib -Wl,-rpath=/home/software/miniconda3/lib -fopenmp -lz -ligraph -pthread 
bin_PROGRAMS = myproj
myproj_SOURCES = gfa.cpp  graph.cpp myproj.cpp gfa.h  graph.h
bindir = $(top_srcdir)/bin
Run Code Online (Sandbox Code Playgroud)

这很好地构建了目标文件,但是在构建目标时,它会尝试运行

g++ -fopenmp -O3 -std=c++17 -g -I/home/software/miniconda3/include -I../external -g -O2 -L/home/software/miniconda3/lib -Wl,-rpath=/home/software/miniconda3/lib -fopenmp -lz -ligraph -pthread   -o myproj myproj-gfa.o myproj-graph.o myproj-komb.o 
Run Code Online (Sandbox Code Playgroud)

这个问题是目标文件在库文件之后,这会导致错误

/home/software/miniconda3/lib/libz.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我可以通过-lz -ligraph在最后添加标志来轻松解决这个问题,但是我怎样才能让 automakeLDFLAGS在目标文件之后而不是之前添加呢?

automake gcc makefile g++ autotools

0
推荐指数
1
解决办法
23
查看次数

错误:版本不匹配。这是Automake 1.15.1,但定义...来自Automake 1.14.1

另一个Autotools问题...我正在研究Fedora 27,并且正在尝试构建libidnlibidn2。我需要configure; make; make install实际工作。我需要它工作的机器只有Autoconf,Automake,Autopoint,Libtool和编译器工具。他们没有别的东西,就像这样<something>2html<something>2pdf所以我无法构建文档。我也不能autoreconf 按照手册运行因为那也坏了。

我不知道为什么这些工具会尝试构建文档,因为我使用禁用了它们--disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf。我曾尝试使用HELP2MAN=true和解决它MAKEINFO=true,但是Autotools找到了另一种破解方法:

gmake[2]: Entering directory '/home/Build-Scripts/libidn-1.33/doc'
echo '# This file is automatically generated.  DO NOT EDIT!          -*- makefile -*-' > Makefile.gdoc
echo >> Makefile.gdoc
echo 'gdoc_TEXINFOS =' >> Makefile.gdoc
echo 'gdoc_MANS =' >> Makefile.gdoc
echo >> Makefile.gdoc
for file in ../lib/idna.c ../lib/nfkc.c ../lib/pr29.c ../lib/punycode.c ../lib/stringprep.c ../lib/tld.c ../lib/toutf8.c ../lib/version.c ../lib/idn-free.c ../lib/strerror-idna.c ../lib/strerror-pr29.c ../lib/strerror-punycode.c ../lib/strerror-stringprep.c …
Run Code Online (Sandbox Code Playgroud)

automake autotools

-1
推荐指数
1
解决办法
4188
查看次数

标签 统计

automake ×8

autoconf ×3

autotools ×3

c++ ×3

makefile ×2

c ×1

c++11 ×1

configure ×1

g++ ×1

gcc ×1

header ×1

include ×1

libtool ×1

macos ×1

watchman ×1