zoukankan      html  css  js  c++  java
  • 编译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

  • 相关阅读:
    洛谷P3796
    cf1291c-Mind Control
    莫比乌斯函数
    C. Mixing Water(三分)
    E. Modular Stability(思维构造)
    【美团杯2020】平行四边形
    原根定义
    E. Are You Fired?(思维)
    102606C. Coronavirus Battle time limit per test4 seconds(三维拓扑序)
    E
  • 原文地址:https://www.cnblogs.com/chutianyao/p/3089082.html
Copyright © 2011-2022 走看看