⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chinaunix_net - 求关于gnu automake autoconf 的实用例子.htm

📁 Makefile编程及相关资料的介绍与入门。很适合初学者的学习与借鉴
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0042)http://www.chinaunix.net/jh/23/417883.html -->
<!-- Generated by LibHtt 2004-12-11 21:13:11   Templet source: /data0/chinaunix.net/cgisrc/do_html/viewtopics_jh.html  Warnings and errors: 0--><HTML><HEAD><TITLE>ChinaUnix.net - 求关于gnu automake autoconf 的实用例子 - 中国Unix技术社区</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META 
content=Linux,Freebsd,Solaris,Sco,HP-UX,IBM-AIX,cisco,oracle,java,cgi,mysql,perl,Apache,proFTP,Sendmail,Qmail,DNS,Squid,Rsync,SSL 
name=keywords>
<META content=中国UNIX技术社区 name=description>
<STYLE type=text/css>BODY {
	FONT: 12pt 宋体
}
TH {
	FONT: 12pt 宋体
}
INPUT {
	FONT: 12pt 宋体
}
SELECT {
	FONT: 12pt 宋体
}
TEXTAREA {
	FONT: 12pt 宋体
}
SELECT {
	FONT: 12pt 宋体
}
checkbox {
	FONT: 12pt 宋体
}
BODY {
	FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
TD {
	FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
P {
	FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
</STYLE>

<META content="MSHTML 6.00.2800.1498" name=GENERATOR></HEAD>
<BODY>
<SCRIPT 
src="ChinaUnix_net - 求关于gnu automake autoconf 的实用例子.files/title.js"></SCRIPT>

<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="75%" border=0>
  <TBODY>
  <TR>
    <TD height=45>
      <P align=center><B>ChinaUnix-C/C++讨论区精华帖</B></P></TD></TR>
  <TR>
  <TR>
    <TD width="100%" bgColor=#49ade9 colSpan=5 height=2><IMG height=1 
      src="ChinaUnix_net - 求关于gnu automake autoconf 的实用例子.files/bline.gif" 
      width=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="75%" border=0>
  <TBODY>
  <TR>
    <TD vAlign=center align=middle bgColor=#edf0f5 height=40><FONT 
      size=5><B>求关于gnu automake autoconf 的实用例子</B></FONT></TD></TR>
  <TR>
    <TD align=middle bgColor=#edf0f5 height=20><SMALL>http://www.chinaunix.net 
      作者:<A 
      href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=182692" 
      target=_blank>wubulen</A>&nbsp;&nbsp;发表于:2004-10-02 
    03:27:53</FONT></SMALL></TD></TR>
  <TR>
    <TD align=middle bgColor=#edf0f5>
      <TABLE style="WORD-BREAK: break-all; BORDER-COLLAPSE: collapse" 
      cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
        <TBODY>
        <TR>
          <TD 
            vAlign=top><BR>关于automake&nbsp;和&nbsp;autoconf&nbsp;的例子网上有很多,但是里面应用的例子都过于简单,基本上都是"hello&nbsp;world",&nbsp;大家是否有比较复杂的例子提供供学习。我现在有个比较大的项目,有20多个C&nbsp;源文件和头文件,又放在不同的目录下,最后安装后要生成好几个可执行文件,这样我就不知道Makefile.am&nbsp;和&nbsp;configure.in&nbsp;怎么写,&nbsp;比如说&nbsp;AC_INIT&nbsp;宏?<BR><BR></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD align=middle><SMALL>【<A 
      href="http://bbs.chinaunix.net/forum/posting.php?mode=reply&amp;t=417883">发表回复</A>】【<A 
      href="http://bbs.chinaunix.net/forum/viewtopic.php?t=417883">查看论坛原帖</A>】【<A 
      href="http://bbs.chinaunix.net/forum/favorites.php?mode=add&amp;t=417883">添加到收藏夹</A>】【<A 
      href="javascript:window.close()">关闭</A>】</SMALL> </TD></TR></TBODY></TABLE><!-----------回复----------->
<TABLE cellSpacing=0 cellPadding=0 width="75%" border=0>
  <TBODY>
  <TR>
    <TD bgColor=#edf0f5>
      <TABLE style="WORD-BREAK: break-all; BORDER-COLLAPSE: collapse" 
      cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
        <TBODY>
        <TR>
          <TD>
            <HR>
            <SMALL>&nbsp;<A 
            href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=29509" 
            target=_blank>kj501</A> 回复于:2004-10-02 10:55:53</SMALL></TD></TR>
        <TR>
          <TD>configure.in写一个就够了,Makefile.am要在不同的目录下分别写。 
            <BR>这些东东都是要实际操作才能理解的。能不能把你的情况说详细一些。<BR><BR></TD></TR>
        <TR>
          <TD>
            <HR>
            <SMALL>&nbsp;<A 
            href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=182692" 
            target=_blank>wubulen</A> 回复于:2004-10-02 23:27:19</SMALL></TD></TR>
        <TR>
          <TD>感谢你的回答。我再讲我的例子说的详细些(举例)。现在我有两个子目录,dir1&nbsp;和&nbsp;dir2,&nbsp;在子目录dir1&nbsp;下有源文件&nbsp;code1.c,&nbsp;code1.h,&nbsp;code2.c,&nbsp;code2.h,&nbsp;code3.c,&nbsp;code3.h,&nbsp;在子目录dir2下同样有几个源文件,code4.c,&nbsp;code4.h,&nbsp;code5.c,&nbsp;code5.h,&nbsp;code6.c,&nbsp;code6.h。最后我希望在bin目录下生成几个可执行文件,比如&nbsp;code1.c,&nbsp;code2.c&nbsp;生成&nbsp;prog1,&nbsp;而&nbsp;code3.c&nbsp;生成prog2,&nbsp;code4.c&nbsp;和&nbsp;code5.c&nbsp;生成&nbsp;prog3。&nbsp;更复杂一点的是在不同子目录下的程序互相关联,比如&nbsp;code2.c&nbsp;中需要用到&nbsp;code6.c&nbsp;中的函数。还有在不同目录下的两个文件生成一个可执行文件,如&nbsp;code2.c&nbsp;和&nbsp;code6.c&nbsp;生成&nbsp;prog4。 
            <BR><BR>还有一个问题,是否可以指定编译器。通常在linux下就用&nbsp;gcc,&nbsp;但是有些程序需要特殊的编译器,比如mpicc&nbsp;(编译mpi&nbsp;函数)。这如何在configure.in&nbsp;文件中指定? 
            <BR><BR>谢谢指教。<BR><BR></TD></TR>
        <TR>
          <TD>
            <HR>
            <SMALL>&nbsp;<A 
            href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=4101" 
            target=_blank>mep</A> 回复于:2004-10-03 10:57:49</SMALL></TD></TR>
        <TR>
          <TD>我们在SourceForge上发布的项目CORBA&nbsp;Component&nbsp;Model实现StarCCM有几十万行代码。支持Win+VC&nbsp;nmake和linux、solaris。原代码中有configure.in和Makefile.in(没有Makefile.am,我们自己写的Makfile.in),可以看到,StarCCM中如何使用.m4;如何在一个大项目中包含几个项目。 
            <BR>网址:http://sf.net/projects/starccm/<BR><BR></TD></TR>
        <TR>
          <TD>
            <HR>
            <SMALL>&nbsp;<A 
            href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=29509" 
            target=_blank>kj501</A> 回复于:2004-10-03 11:40:35</SMALL></TD></TR>
        <TR>
          <TD>[quote:656c0e17e3="wubulen"]感谢你的回答。我再讲我的例子说的详细些(举例)。现在我有两个子目录,dir1&nbsp;和&nbsp;dir2,&nbsp;在子目录dir1&nbsp;下有源文件&nbsp;code1.c,&nbsp;code1.h,&nbsp;code2.c,&nbsp;code2.h,&nbsp;code3.c,&nbsp;code3.h,&nbsp;在子目录dir2下同样有几个源文件,code4.c,..........[/quote:656c0e17e3] 
            <BR>bin目录是那个目录,是你的程序安装的目录吗?如果我估计得不错的话,应该是/usr/bin,或者是/usr/local/bin吧。 
            <BR>prog1应该是一个可以单独执行的程序吧。不需要调用自己编写的动态库文件吗?<BR><BR></TD></TR>
        <TR>
          <TD>
            <HR>
            <SMALL>&nbsp;<A 
            href="http://bbs.chinaunix.net/forum/profile.php?mode=viewprofile&amp;u=29509" 
            target=_blank>kj501</A> 回复于:2004-10-03 17:39:25</SMALL></TD></TR>
        <TR>
          <TD>先来举一个简单的例子吧。如何写用code1.c,&nbsp;code2.c生成&nbsp;prog1的configure.in和Makefile.am。 
            <BR>首先建立一个项目文件夹tt。在tt下建立dir1目录。 <BR>[code:1:78df12705f] 
            <BR>[kj501@s2023&nbsp;dir1]$&nbsp;mkdir&nbsp;tt 
            <BR>[kj501@s2023&nbsp;dir1]$&nbsp;mkdir&nbsp;tt/dir1 
            <BR>[/code:1:78df12705f] 
            <BR>然后在dir1目录中分别建立code1.c,&nbsp;code1.h,&nbsp;code2.c,&nbsp;code2.h,由于楼主没有给出源代码,我自己写了几个简单的语句,以便说明问题。 
            <BR>下面是code1.h: <BR>[code:1:78df12705f] 
            <BR>#include&nbsp;&lt;stdlib.h&gt; <BR><BR>void&nbsp;foo_a(); 
            <BR>[/code:1:78df12705f] <BR>下面是code1.c: <BR>[code:1:78df12705f] 
            <BR>#include&nbsp;"code1.h" <BR><BR>void&nbsp;foo_a() <BR>{ 
            <BR>printf("This&nbsp;is&nbsp;code1.\n"); <BR>} 
            <BR>[/code:1:78df12705f] <BR>下面是code2.h: <BR>[code:1:78df12705f] 
            <BR>#include&nbsp;&lt;stdlib.h&gt; <BR><BR>void&nbsp;foo_b(); 
            <BR>[/code:1:78df12705f] <BR>下面是code2.c,这里让code.c作为prog1的入口点: 
            <BR>[code:1:78df12705f] <BR>#include&nbsp;"code1.h" 
            <BR>#include&nbsp;"code2.h" <BR><BR>void&nbsp;foo_b() <BR>{ 
            <BR>printf("This&nbsp;is&nbsp;code2.\n"); <BR>} 
            <BR><BR>int&nbsp;main() <BR>{ <BR>foo_a(); <BR>foo_b(); <BR>} 
            <BR>[/code:1:78df12705f] 
            <BR>建立好这几个文件之后,下面就可以正式建立configure.in和Makefile.am了。 
            <BR>首先在tt目录下建立configure.in文件: <BR>[code:1:78df12705f] 
            <BR>#指定项目的一个源文件 <BR>AC_INIT(dir1/code2.c) <BR><BR>#指定项目名称和版本号 
            <BR>AM_INIT_AUTOMAKE(prog1,&nbsp;0.0.1) <BR><BR>#检查编译器 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -