C 学习如何使用GNU自动工具打包我的程序时遇到问题
我第一次尝试使用GNU自动工具来打包我的C程序MyShell。我试过两次,但都失败了。我遵循了,但我的程序不同之处以及导致问题的原因(我认为)是有1个C 学习如何使用GNU自动工具打包我的程序时遇到问题,c,linux,gnu,autotools,C,Linux,Gnu,Autotools,我第一次尝试使用GNU自动工具来打包我的C程序MyShell。我试过两次,但都失败了。我遵循了,但我的程序不同之处以及导致问题的原因(我认为)是有1个.h文件和5个.c文件,而本教程只使用一个.c文件 以下是我的程序的文件结构: MyShell/ 自述 src/ src/ 命令执行者 CommandReader.c 叉形发射器 Main.c 我的地狱 MyShellLoop.c 如果您能提供关于如何编写Makefile.am文件、configure.ac文件等的任何指导,或者提供关于如何
.h
文件和5个.c
文件,而本教程只使用一个.c
文件
以下是我的程序的文件结构:
MyShell/
- 自述
- src/
- 命令执行者
- CommandReader.c
- 叉形发射器
- Main.c
- 我的地狱
- MyShellLoop.c
bin_PROGRAMS = MyShell
MyShell_SOURCES = Main.c
SUBDIRS = src
dist_doc_DATA = README
MyShell/Makefile.am
bin_PROGRAMS = MyShell
MyShell_SOURCES = Main.c
SUBDIRS = src
dist_doc_DATA = README
MyShell/configure.ac
AC_INIT([MyShell], [1.0], [<my email address>])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
我是否应该将config.h
替换为MyShell.h
MyShell_SOURCES = Main.c
这似乎是错误的。您需要列出所有源文件
我是否应该将config.h
替换为MyShell.h
MyShell_SOURCES = Main.c
否。
config.h
应该由configure
脚本从config.h.in
文件中生成。“How”可以是漂亮的。很复杂。您是否正在调整您的程序,使其能够在多种不同的系统类型上编译?如果是这样,您需要一个单独的config.h
文件,该文件将由客户端计算机上的configure
脚本生成,自动工具将根据您指定的信息创建配置脚本(etc)。如果你不需要配置你的程序,那么使用AutoTools可能是杀伤力太大了。@JonathanLeffler将来我希望它能在不同的系统上运行,但现在它只需要在Linux上运行。这是一项任务,我们被要求使用Autotools进行打包,或者“编写您自己的Makefile并创建tar.gz Maualy”。在这两者之间,我每次都会使用手动编写的Makefile—这并不是那么难(尽管干净地完成这项任务并不十分简单)。然而,练习是练习,提供了一种学习体验。我有几个自动配置的程序,其中一个也使用了automake
——但我很久以前就做过自动配置(从修订历史来看,2007年)。我有足够的时间来忘记细节(并从系统给我造成的创伤中恢复过来)。好吧,只列出一个逗号分隔的列表是有意义的?此外,我需要将此作为大学作业提交,课程名称必须采用xxxx\U xxxx格式。我可以在Makefiles和configure文件中将任何“MyShell”替换为“xxxx\u xxxx”吗?或者这会不会在xxxx\u xxxx\u Sources=MyShell.h,Main.c…
?好的,这应该没问题。等等,不是逗号分隔的。。。空格分隔。。就像在我发布的链接中一样。谢谢,我现在要再试一次