在unix上构建m4、autoconf、automake、libtool
我正在尝试在HP-UX服务器上设置PHP,Apache环境.安装时,我使用的是" ./configur,制作,安装"的通常命令.在这里,当我尝试安装PCRE时,我会像以下内容一样出现错误. CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/ubuntu/softwares/m4-1.4.17/build-aux/missing aclocal-1.14 -I m4 /home/ubuntu/softwares/m4-1.4.17/build-aux/missing: line 81: aclocal-1.14: command not found WARNING: 'aclocal-1.14' is missing on your system. You should only need it if you modified 'acinclude.m4' or 'configure.ac'
6 2023-11-08
编程技术问答社区
无法构建GNU automake
使用wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 安装自动制品 ./configure --prefix=$HOME/local对我来说很好. 在此步骤之后,我跑了make,并且失败了: GEN bin/automake GEN bin/aclocal GEN t/ax/shell-no-trail-bslash GEN t/ax/cc-no-c-o GEN runtest GEN lib/Automake/Config.pm GEN doc/aclocal-1.15.1 GEN doc/automake-1.15.1 help2man: can't get `--help' info from automake-1.15 Try `--no-discard-stderr' if option
8 2023-11-08
编程技术问答社区
使用Automake进行单元测试
我正在使用GNU Autotools与团队中的其他人一起工作.在项目中,我们正在为每个非琐事C ++类使用单元测试.我发现有对单元测试的支持.为此,我正在使用此结构: ./ + tests/ + Makefile.am + classA_test.cc .... + classB_test.cc + src/ + lib/ + Makefile.am 问题出现是因为我的主要makefile.am正在使用 subdir-objects 选项 - 我不为源文件使用递归makefile - 我无法导出我的变量-UCH,我无法导出AS,am_cppflags-到另一个makefile.到目前为止,我使用: $ make check ,但是当我做路径和选择时,我一直在 $ make distcheck 所以我的问题是,如何处理单位测试的标准方法是如何? 编辑: 我只要从
4 2023-11-07
编程技术问答社区
Automake AM_LDADD的解决方法
我想将相同的LDADD属性(单元测试库)设置为大量目标(单位测试C ++文件).我首先,尽管Automake可能具有AM_LDADD变量,将该库添加到文件中的所有目标中,但事实并非如此. 在某些邮件列表中,我发现一些简短的讨论要求添加: .nabble.com/am-libs-am-dadd-td3698.html 我的问题是,您如何处理?是否有任何方法可以避免手动将LDADD属性添加到每个目标? 到目前为止,我的makefile.am看起来像: test1_SOURCES = ... test1_LDADD = -llibrary ... ... test20_SOURCES = ... test20_LDADD = -llibrary 解决方案 AM_LDADD变量的等效物就是 .例如, LDADD = -llibrary test1_SOURCES = ... ... test20_SOURCES = ... 如果您需要覆盖特
0 2023-11-07
编程技术问答社区
MacOS-automake:未找到命令
我尝试使用brew在MacOS上安装automake.从终端我写的,brew install automake说Warning: automake-1.15 already installed. 当我尝试automake version时,它会响应-bash: automake: command not found.我正在使用OS X El Capitan. $ automake version -bash: automake: command not found $ brew install automake Warning: automake-1.15 already installed $ automake version -bash: automake: command not found 解决方案 解决方案与brew未能将二进制链接到PATH中有关.解开并重新链接解决了它. 其他解决方案 多么令人发指的问题!在Docker的情况下, 很难获得AutoC
6 2023-10-17
编程技术问答社区
Autotools-tar 这看起来并不像一个tar档案。
运行make distcheck后,我收到了我成功构建软件包并准备发行的消息.如果我用tar -zxvf hello-0.2.tar.gz取消tar.gz>,它成功提取了其所有内容.但是,当我尝试在不同的机器中提取它们时,我会得到: tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors 很奇怪的是它在以前工作. 在我试图构建软件包的机器上,我已经更新了automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23,但仍然存在同一问题. 有什么想法可能是什么问题? 解决方案 问题不在构建计算机上;问题在目标机上. 并非所有版本的tar自
10 2023-10-14
编程技术问答社区
自动制作,生成源文件和VPATH构建
我正在使用Automake进行vpath构建.我现在也将生成的源与Swig一起使用.我在Makefile.am中有规则: dist_noinst_DATA = whatever.swig whatever.cpp: whatever.swig swig -c++ -php $^ 然后以后使用该文件: myprogram_SOURCES = ... whatever.cpp 当$builddir == $srcdir>时,它可以正常工作.但是,当进行vpath构建(例如mkdir build; cd build; ../configure; make)时,我会收到有关少数whatever.cpp的错误消息. 生成的源文件应该转到$builddir或$srcdir? (我认为可能$builddir.) 应该如何指定依赖性和规则将生成的文件放在正确的位置? 解决方案 简单答案 您应该假设$srcdir是一个只读,因此您一定不能在那里写任何
0 2023-10-10
编程技术问答社区
Automake 将两个静态库合并为一个
我试图将预先构建的静态库中的符号包括在我正在构建的静态库中.然后,我正在建造的静态库将在可执行文件内使用.我遇到的问题是,我从其他静态库中的静态库中获得了不确定的符号.这意味着我需要从预构建的静态库中需要的符号不包含在我的静态库中. 自动工具的正确方法是什么?我知道我需要将预先构建的构造构建,并将这些.o文件包含在我的存档中.我只是不知道如何使用Automake做到这一点. 下面是我目前与我遇到的相对构建错误的makefile.am. lib_LTLIBRARIES = lib_xml_wrapper.la # List your sources lib_xml_wrapper_la_SOURCES = \ xml_system.cpp lib_xml_wrapper_la_LDFLAGS = -static -l$(WRAPPER_LDFLAGS) lib_xml_wrapper_la_CXXFLAGS = -
4 2023-09-29
编程技术问答社区
在solaris中,PKG_CHECK_MODULES被打破。
我的项目需要使用autotools检查依赖项并安装相同的依赖性.我声明在configure.ac 中使用以下宏的依赖性 echo -n "checking if libxml2 is present... " PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.19], [echo "yes (features requiring libxml2 enabled)" AC_DEFINE(HAVE_LIB_XML, 1, [define if libxml2 is present])], [echo "no"] ) 宏在GNU/Linux中按需要工作. ,但某种程度上它在Solaris中失败,以下错误 checking if libxml2 is present... ./configure: line 11586: syntax error near une
20 2023-09-06
编程技术问答社区
使用本地头文件时未定义的引用
我在使用AutoMake时遇到了undefined reference错误,仅在存储库中存在某个本地标头文件(include/lmp2atomstyle.h,同一存储库中的库)时才发生. 我正在努力将多个汽车项目源文件夹(lmpio和lmp2atomstyle)组合到一个为方便的情况下.这两个项目都是图书馆,每个图书馆也提供一个小程序进行测试. 手动合并Makefile.am,lmp2atomstyle编译良好,但是lmpio无法从liblmp2atomstyle.so中找到符号: $ make check make lmpiotest make[1]: Entering directory `/home/e.lorenz/code/lmputils' /bin/sh ./libtool --tag=CXX --mode=link g++ -g -O2 -lfftw3 -llmpio -llmp2atomstyle -o lmpiotest src/lmpio
10 2023-09-01
编程技术问答社区
如何在automake脚本中创建一个共享库(.so)?
给出了一些源文件test.cpp我想创建一个共享的库libtest.o.我正在尝试在汽车文件的范围内执行此操作,但是我似乎无法使它起作用. 例如,在g ++下,我做以下操作: g++ -shared -fPIC test.cpp -o libtest.so 然后,我可以创建另一个文件,该文件将取决于共享库,如下所示: g++ mytest.cpp libtest.so -o blah 我已经读到,自动收益仅支持通过libtool制作共享库.我试图使我的汽车脚本如下工作,但似乎从未产生.So.我获得的最接近的是生成.la和.o文件: in Configure.ac: AC_ENABLE_SHARED AC_DISABLE_STATIC AC_PROG_LIBTOOL(libtool) 在makefile.am 中 lib_LTLIBRARIES=libtest.la libtest_la_SOURCES=test.cpp libtest_la_
6 2023-08-31
编程技术问答社区
为Makefile.am中的一个源码调用SED
我有C ++代码需要在编译之前对其进行SED.我如何将其放入Makefile.am? 中 我尝试了典型的makefile设置,而目标似乎不存在: gentest.cc: $(SED) -i "s|FIND|REPLACE|" gentest.cc 如果您对为什么要这样做有兴趣,那是因为我在Python写了我的程序(slider3.py),而我的伴侣在C ++(gentest.cc)中写了他的,他需要给我打电话.我通过编辑argv,然后使用execv()来完成此操作. ... { char **argv2 = new char*[argc]; memset(argv2,0,sizeof(argv2)); argv2[0] = "__PREFIX__/bin/slider3.py"; memcpy(argv2 + 1, argv + 2, sizeof(char *) * (argc - 2)); int oranges = exec
8 2023-08-25
编程技术问答社区
Automake-difficulty with installing version 'automake-1.14.1'
我在Rapbian上安装Automake 1.14.1(2014-09-09-Wheezy-Raspbian)发行术有问题.我写了sh ./configure,然后写了make,然后终端给我写信: $ make CDPATH="${ZSH_VERSION+.}:" && cd . && "/home/pi/LIBRARY/automake-1.14./twrap/aclocal-1.14" Can't locate /home/pi/LIBRARY/automake-1.14.1/bin/aclocal in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5usr /share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .)
4 2023-07-25
编程技术问答社区
如何用automake检查操作系统
我有一个使用Automake创建configure和所有相关文件的项目(我正在使用autoreconf命令来制作所有这些内容).因此,我试图在项目编译MacOS(OS X),Windows或Linux时设置一些有条件的文件以编译.但是以下内容失败了: $ autoreconf -i .. src/Makefile.am:30: error: LINUX does not appear in AM_CONDITIONAL autoreconf: automake failed with exit status: 1 和包含错误的零件为Makefile.am是: if OSX butt_SOURCES += CurrentTrackOSX.h CurrentTrackOSX.m endif if LINUX butt_SOURCES += currentTrack.h currentTrackLinux.cpp endif if WINDOWS bu
18 2023-06-19
编程技术问答社区
通过config.h对sysconfdir的便携访问
我希望我的应用程序可以便携式访问make install(dist_sysconf_data)中安装的配置文件.是否可以通过config.h? 访问$(sysconfdir) 解决方案 是,但是您不应该根据官方声音(如,我现在不会为其搜索手册),以便继续支持覆盖它以构建要构建的特定对象. make CPPFLAGS="-USYSCONFDIR -DSYSCONFDIR=/blah" thisoneobject.o 因此,应该做什么: AM_CPPFLAGS = -DSYSCONFDIR=\"${sysconfdir}\" 其他解决方案 如果您使用的是AutoHeader,则将其添加到您的configure.ac将在您的config.h中输出一个sysconfdir宏,并且将使用值$(sysconfdir)或$ {prefix}/etc将其定义. if test "x$sysconfdir" = 'x${prefix}/etc'; then if
4 2023-06-10
编程技术问答社区
将生成的文件添加到分发中的最佳方法?
我使用AutoConf/Automake有一个非常复杂的(C ++)项目,其中包括一些"生成"文件(foo.yy-> foo.cc).实际构建是使用"控制脚本"(Gentoo .Ebuild for熟悉该概念的人)完成的,在各种平台上. 现在,目标平台之一不能正确支持foo.yy-> foo.cc步骤,并且必须使用在Linux框上生成的foo.cc文件. 现在我有两种方法可以解决: 1)在foo.cc中检查到项目存储库中,并以某种方式patch configure.in(或其他)以包含时间戳检查foo.yy/foo.cc上,如果在有关目标上运行,则会生成可理解的错误消息使用过时的foo.cc; 2)在foo.cc中检查到控制脚本存储库中,并具有脚本控制时间戳并提供错误消息. 我可以做2)没问题,但是我认为这不是放置foo.cc的正确位置. 另一方面,我对AutoConf/Automake不了解,并且不知道如何在configure.in中实现时间戳检查/
10 2023-05-16
编程技术问答社区
Autoconf的子目录与子包之间相互依赖?
我手上有一个大型项目(主),分为几个组件(liba,b,c,d),以简化建筑和维护.构建整个软件包时,所有子组件都必须按顺序构建,其中一些软件包彼此依赖. 在更明确的术语中,liba是B,C和D的先决条件,并且通过配置脚本检查了LIBA的存在.当自行构建B分发时,这项检查绝对是给出用户友好错误消息的必要条件.但是,当构建主包及其所有子包时,liba将作为字母货物构建.因此,当配置在主套件上运行时,尚未安装liba,并且B中的LIBA检查失败. 我可以通过将a-with-with-liba =内部或类似标志传递给b的配置脚本来纠正此问题;但是,我还没有在AutoConf上找到任何此类标志的文档.目前,我在主中有一个长长的自定义makefile,它与带有子目录的AutoConf/automake的作用相同,但是重新依赖依赖性略有依赖性,以免(配置liba)=>(配置b)=>(构建liba)=>(构建b),订单为(配置liba)=>(构建liba)=>(安装liba)=>(配置b)
6 2023-05-16
编程技术问答社区
使用pkg-config宏PKG_CHECK_MODULES失败。
我确定这是一个相当简单的问题.我有一个非常简单的configure.ac文件,我用来了解Autoconf&pkg-config如何一起工作. confgure.ac文件看起来像: AC_PREREQ(2.61) AC_INIT(autoconf_test, 1.0, nowhere@dev.null) PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4) 我可以从命令行执行AutoConf,并且确实会产生配置脚本.但是,当我运行配置脚本时,我会收到以下错误: ./configure: line 1618: syntax error near unexpected token `libusbmuxd,' ./configure: line 1618: `PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4)' 如果我使用命令行中的pkg-config程序检查是否可以找到此库,
34 2023-05-15
编程技术问答社区
旧的.Po文件引用旧的目录,如何重新开始?
简介 我只是删除了目录nested并在我的Makefile.am 中删除了对其的引用 我正在运行./configure && make,我得到以下内容: *** No rule to make target 'nested/main.c', needed by 'main.o'. Stop. 我如何运行make以使其不引用旧目录? 补充信息 我很好奇我是否能找到此参考位置,所以我做了grep -r nested .我认为唯一相关的热门是: ./src/.deps/main.Po:main.o nested/main.c /usr/include/stdc-predef.h /usr/include/stdio.h \ 解决方案 从OP的评论中回答此问题: 运行 make distclean
8 2023-04-26
编程技术问答社区
无法进行 "清洁": "没有规则使目标...Plo"
问题摘要 我正在尝试make clean,并且正在收到以下输出: Makefile:835: /absolute/path/to/server/server/example/.deps/libfoo-bar.Plo: No such file or directory Makefile:836: /absolute/path/to/server/server/example/.deps/libfoo-baz.Plo: No such file or directory Makefile:837: /absolute/path/to/server/server/example/.deps/libfoo-qux.Plo: No such file or directory Makefile:838: /absolute/path/to/server/server/example/.deps/libfoo-quux.Plo: No such file or directory Ma
12 2023-04-26
编程技术问答社区