編譯步驟大致如下:
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 支援 不等條件...