編譯antrl c runtime 3 5步驟

2022-03-02 18:56:39 字數 1147 閱讀 9207

編譯步驟大致如下:

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

編譯 交叉編譯

交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...

核心編譯 模組編譯

目前是嵌入式 linux 的初學者感覺有所體會 1.從demo 學起 tiny 6410 上的開發,我的任務不斷是新增小模組。交叉編譯器,以及其它一系列 tool chains 可直使用產商提供的工具。避免過多細節的好處在於,你可以從整體處著手你從書本學到的理論知識。2.kernel 編譯其它很簡單...

Golang 編譯 條件編譯

條件編譯 標籤編譯 build tag build build linux and 386 or darwin and not cgo 以 開始,例如 build 支援 goos 與 goarch 並可以具有多個值,用 分割,例如 build linux,darwin,freebsd 支援 不等條件...