| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1173 人关注过本帖
标题:linux下面c++的编译问题
只看楼主 加入收藏
思考的哲学家
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
linux下面c++的编译问题
我现在遇到一个很奇怪的问题,我相同的两个源文件夹做make,其中一个能编译过,另外一个却编译不过。我用diff比较过两个文件夹是相同的。

而且两个源文件夹我也是放在同一个目录下面,同一个用户去编译的,也就是说环境变量这些应该是一样的。

两个源文件夹的唯一区别就是,编译不过的那一个源文件夹是在clearcase下面的,而能编译过的是本地文件,不过我觉得这个应该不是出问题的原因。根本原因是我在进行make的时候,那个编译不过的源文件夹回去运行aclocal-1.9,run automake-1.9 ,run autoconf一类的工具。而能编译过的那一个却没有这些步骤。

而编译不过的错误信息如下:

cd . && /bin/sh /vobs/agps_tag/mals6_0/src/clm/CLM-2.1/log4c/config/missing --run aclocal-1.9

aclocal:configure.in:194: warning: macro `AM_PATH_EXPAT' not found in library

 cd . && /bin/sh /vobs/agps_tag/mals6_0/src/clm/CLM-2.1/log4c/config/missing --run automake-1.9 --gnu

cd . && /bin/sh /vobs/agps_tag/mals6_0/src/clm/CLM-2.1/log4c/config/missing --run autoconf

configure.in:205: error: possibly undefined macro: AM_PATH_EXPAT

      If this token and others are legitimate, please use m4_pattern_allow.

      See the Autoconf documentation.



跪求各位大神指点一下给点儿思路。
搜索更多相关主题的帖子: 用户 源文件 
2012-08-16 16:36
jarryjsq
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:45
专家分:124
注 册:2011-7-11
收藏
得分:10 
linux不懂,帮不了你了。。。
2012-08-17 10:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
make 的逻辑和文件夹的路径应该没什么关系,它一般都用的相对路径。

你确定你只是把那个文件夹 copy 到了另一个路径就不能编译了?
2012-08-17 15:03
思考的哲学家
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-16
收藏
得分:0 
回复 3楼 pangding
是这样的,我们这边是用的clearcase做的代码管理。这个模块之前是属于A项目的,一切正常。后来B项目也需要这个模块就把这个模块merge到了B项目里面。但是在B项目里面却编译不过,我之前以为是环境的问题,但是我把模块从A项目中copy出来放到B项目的目录下面做make,也没有问题。但是B项目的这个模块就是make不过。然后我用diff比较了这两个文件夹,发现没有区别。但是在B项目make这个模块的时候他就会运行我上面提到的那一系列工具去重新生成makefile。在这个过程中出现了问题。但是我从A项目拷贝出来这个模块却没有这些步骤。我想问一下是不是在运行完那一系列工具之后,会给文件夹加个什么属性还是什么的,第二次make的时候就不会再去运行这些东西。我非常疑惑这个问题,麻烦你有什么思路给参考一下吗?万分感谢~~
2012-08-17 17:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
可能和你 B 项目的 makfile 有关,比如它指定了进入子文件之后生成 makefile 的规则。

automake 是用来生成 makefile 文件的。大项目的 makefile 逻辑复杂之后,一般就不会手写了。指定一些宏之后,automake 配合 autoconf 之类的工具就可以自动生成 makefile 和 configure。
可能你这两个项目用的 make 思路根本就不一样,如果代码调试是没问题的话,应该不用改动太多就可以应用新模块。


[ 本帖最后由 pangding 于 2012-8-17 20:37 编辑 ]
2012-08-17 20:32
快速回复:linux下面c++的编译问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019339 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved