编译antrl c runtime 3.5步骤

Antrl 官方没有提供预编译的3.5版本的c runtime,我下载源码编译了一下。源码里没有现成的Makefile,需要使用configure工具生成。

编译步骤大致如下:

1.执行命令aclocal生成aclocal.m4

2.文件aclocal.m4有点小问题,需要将: LIBTOOL='$(SHELL) $(top_builddir)/libtool' 替换为 LIBTOOL='$(SHELL)  /usr/bin/libtool'

3.源码包中还缺少一些系统脚本,可以从官方网站提供的其他版本(3.2)的预编译runtime中提取.即从官网3.2版本的c runtime包中提取config.status拷到\antlr3-antlr-3.5\runtime\C下,install-sh,config.guess,config.sub拷到\antlr3-antlr-3.5下。

4.执行命令:

autoconf

automake  --add-missing

./configure

Make

 -------------------------------

update:

今天写测试程序时无法连接到静态库:

g++ -I../antlr3-antlr-3.5/runtime/C/include/  -lantlr3c -L../antlr3-antlr-3.5/runtime/C/.libs test.cpp

报错:

/usr/bin/ld: skipping incompatible ../antlr3-antlr-3.5/runtime/C/.libs/libantlr3c.so when searching for -lantlr3c
/usr/bin/ld: skipping incompatible ../antlr3-antlr-3.5/runtime/C/.libs/libantlr3c.a when searching for -lantlr3c
/usr/bin/ld: cannot find -lantlr3c
collect2: ld returned 1 exit status

 

查找资料后我认为原因是:之前编译的静态库libantlr3c.a是32位的,而我们的机器是64位的。

解决办法:./configure 时加参数:./configure --enable-64bit 指定编译64位的静态库。

 

问题是解决了,但是还有点不是很明白:我的静态库libantlr3c.a是在同一台机器(64位)上编译的啊,为什么是32位的呢?也许他默认是编译成32位的?

2013-05-21

 

转载于:https://www.cnblogs.com/chutianyao/archive/2013/05/20/3089082.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值