導航:首頁 > 源碼編譯 > gofi源碼編譯環境安裝

gofi源碼編譯環境安裝

發布時間:2023-01-30 13:08:15

『壹』 android源碼環境編譯出來的apk 怎麼安裝到手機上去

如果手機上已經有包名一樣的apk是安裝不上去的吧,如果可以用adb remount 再push到system/app替換原來的launcher試試

『貳』 windows 怎麼編譯 go語言

1、解壓壓縮包到go工作目錄,如解壓到E:\opensource\go\go,解壓後的目錄結構如下:

E:\opensource\go\go
├─api
├─bin
│ ├─go.exe
│ ├─godoc.exe
│ └─gofmt.exe
├─doc
├─include
├─lib
├─misc
├─pkg
├─src
└─test

2、增加環境變數GOROOT,取值為上面的go工作目錄
3、Path環境變數中添加";%GOROOT%\bin",以便能夠直接調用go命令來編譯go代碼,至此go編譯環境就配置好了
註:如果不想手動設置系統環境變數,也可下載go啟動環境批處理附件,
修改goenv.bat文件中的GOROOT值為上面的go工作目錄後直接雙擊該bat文件,go編譯環境變數即設置完成。
4、測試go編譯環境,啟動一個cmd窗口,直接輸入go,看到下面的提示就是搭建成功了

E:\opensource\go\go>go
Go is a tool for managing Go source code.

Usage:

go command [arguments]

The commands are:

build compile packages and dependencies
clean remove object files
doc run godoc on package sources
env print Go environment information
fix run go tool fix on packages
fmt run gofmt on package sources
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages

Use "go help [command]" for more information about a command.

Additional help topics:

gopath GOPATH environment variable
packages description of package lists
remote remote import path syntax
testflag description of testing flags
testfunc description of testing functions

Use "go help [topic]" for more information about that topic.

5、編譯helloworld測試程序,go語言包中test目錄帶有helloworld.go測試程序,源碼見"附一 helloworld.go",
直接調用"go build helloworld.go"就生成了"helloworld.exe"可執行程序,運行一下這個程序看到了我們期望的hello,wolrd。

E:\opensource\go\go\test>go build helloworld.go

E:\opensource\go\go\test>helloworld.exe
hello, world

E:\opensource\go\go\test>

附一 helloworld.go

// cmpout

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test that we can do page 1 of the C book.

package main

func main() {
print("hello, world\n")
}

『叄』 linux下怎麼安裝Go開發環境

網路二進制安裝
ubuntu :
$ sudo apt-get install golang
redhat :
$sudo yum install golang

源碼安裝
安裝依賴軟體包 Mercurial,同樣使用網路安裝即可,例如
$ sudo yum install mercurial
解壓縮下載的go源碼包
$ tar xvf go.xxx.tar.gz
編譯
$ cd /PATH_TO_GO_DIR/src
$ ./all.bash
出現"ALL TESTS PASSED",代表編譯成功
配置環境變數,修改profile或.bashrc文件,加入如下代碼
export GOROOT=/PATH_TO_GO/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN

『肆』 如何配置go語言開發環境

1、下載go的zip文件。並且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級環境變數。包括:GOROOT、GOOS、GOBIN、GOARCH。並且在path變數裡面把c:\go\bin加入。以便可以在命令行直接運行go命令。
舉例:我的機器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫的go語言項目的工程目錄;
F:\workspace\goSample01\bin是go語言項目的工程目錄下的可執行文件路徑;

3、在完成環境變數配置後,打開一個命令行窗口,直接輸入go,然後回車,看看是否出現go的幫助信息。如果出現,那麼go的基本環境就OK了。
注意:這個基本環境不包含開發工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠程包,最好裝個gomingw。下載地址:http://code.google.com/p/gomingw/downloads/list。如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。裡面有個Console.bat是以後使用go get的環境。舉例:有個文件a.go,裡面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動Console.bat,然後在該命令行窗口,進入c:\go\src目錄下,執行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會自動下載該遠程包並編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發工具,請跳過這個配置。)
1、下載並安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:http://code.google.com/p/goclipse/
2、啟動eclipse並創建go項目。然後寫個最簡單的helloworld.go文件,並運行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語法輔助和eclipse裡面的(按ALT+/)彈出go語言自動輔助功能,請跳過這個配置。
1、下載gocode的zip文件,解壓後放在go的bin目錄下。
2、下載並安裝Git軟體。並且在path裡面配置git的執行路徑。例如c:\git\bin
3、在命令行執行:go build .\gocode。如果一切正常,那麼將會編譯生成一個gocode.exe文件在go的bin目錄下。如果編譯失敗,那麼就轉第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然後再編譯。在命令行執行:go get -u github.com/nsf/gocode 。就會生成gocode.exe文件。
5、在goclipse插件裡面指定gocode的路徑。就可以在elcipse裡面調用gocode來幫助寫編碼了。
從開發工具這塊看,go語言還不夠成熟,開發工具都還不完善,有待改進。
下載go-tour教程源代碼(可選)
Google有個在線運行go語言的教程(http://tour.golang.org/#2),很不錯。支持在web上直接運行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。

1、下載安裝Mercurial軟體。
2、在命令行下輸入:
hg clone http://[email protected]/r/qinhui99-go-tour/
http://[email protected]/r/qinhui99-go-tour/這個URL是我從google的go-tour源代碼的一個clone。作為測試用的。如果把http改成https協議,下載就會失敗。搞不懂。

編譯帶調用C代碼的go文件(可選)

1、為了在windows下編譯帶C代碼的go程序,你首先需要下載並安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之後,記得要把MinGW安裝目錄\bin路徑設置在path環境變數裡面,以便能在dos窗口下直接調用gcc。
3、下載一個gowin-env。下載地址:gowin-env。下載後解壓到某個目錄下,例如:C:\gowin-env. 然後,編輯go-env.bat。配置相關的go參數。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設置好go-env.bat後,就可以點擊Console.bat來啟動編譯和運行窗口。

4、編寫一個帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go

運行調用C代碼的go文件(可選)
1、testc.go.
創建rand目錄,然後在rand裡面創建testc.go. 代碼如下:
package rand
/*
//
#include <stdio.h>
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級創建test_import.go。代碼如下:
package main

import "./rand"

func main(){
rand.SayHello("tom")
rand.PrintHello()
}

4、運行test_import.go
go run test_import.go

在測試其它幾個C代碼的時候,發現windows版本的cgo還有些編譯問題,同樣的代碼轉移到蘋果的XCODE下就沒有問題。後來終於發現原因了,原來有些例子是unix平台下的,而在windows平台下,方法名和參數需要做調整。
例如:下面代碼在windows下編譯報一堆錯誤。
package rand
/*
#include <stdlib.h>
*/
import "C"

func Random() int {
return int(C.random())
}

func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為「return int(C.rand())」
C.srandom(C.uint(i))修改為「C.srand(C.uint(i))」編譯就OK了。

『伍』 linux下怎麼安裝Go開發環境

一、Go安裝使用

1、下載Go源碼包
https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz

上傳到/usr/local/src目錄下

2、編譯安裝Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/

#註:必須使用root賬戶或者使用sudo來解壓縮Go源碼包

3、設置PATH環境變數,添加/usr/local/go/bin到環境變數
export PATH=$PATH:/usr/local/go/bin

4、安裝到自定義位置

Go二進制文件默認安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設置正確的環境變數。

例如,安裝Go到家目錄下,必須添加環境變數到$HOME/.profile
export GOROOT=$HOME/go

export PATH=$PATH:$GOROOT/bin

註:安裝Go到其他目錄時,GOROOT必須設置為環境變數

5、檢查是否正確安裝程序

通過設置一個工作區和建立一個簡單的程序,檢查是否正確安裝了一個簡單的程序。創建一個目錄包含您的工作空間,例如/data/work,並設置GOPATH環境變數指向的位置。
export GOPATH=/data/work

#如果不存在/data/work,需要新建

然後,在你的工作內創建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}

#使用go編譯hello.go
go install github.com/user/hello

#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區內,執行下面命令,會得到輸出結果。
$GOPATH/bin/hello

hello,world!

#當出現hello,world!表明Go已經安裝成功可以工作。

二、Go工作區介紹

1、機構組織代碼概述

Go語言程序通常將所有的代碼保存在一個工作區中。

工作區包含許多版本控制庫(由Git管理)。

每個存儲庫包含一個或多個包。

每個包由一個或多個在一個目錄中的源文件組成。

一個包的目錄的路徑決定其導入路徑。

註:同於其他的編程環境中,每一個項目都有一個獨立的工作區且工作區是緊密聯系在一起的版本控制庫。

2、工作區介紹

工作區是一個目錄層次結構,它的根目錄有三個目錄:

src 包含Go源文件

pkg 包含對象和包

bin 包含可執行命令
Go工具創建源碼包並安裝二進制文件到pkg和bin目錄下
src目錄通常包含多個版本控制庫(如Git或Mercurial),跟蹤一個或多個源包的開發。
下面展示一個好的工作區的例子:
bin/
hello # command executable
outyet # command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a # package object
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...

上面的屬性圖展示了一個包含兩個存儲庫(example和image)的工作區,example 存儲庫包含兩個命令(hello,outyet),image庫包含bmp包和幾個其他的包。

一個典型的工作區包含包含許多軟體包和命令的多個源庫。大多數程序員將所有的源代碼和依賴關系保存在一個工作區中

3、GOPATH環境變數設置

GOPATH環境變數指定工作區的位置。它很可能是唯一的環境變數,代碼開發時需要設置。

開始,創建一個工作區目錄並設置相應的gopath。您的工作區可以位於任何你喜歡的地方,但我們將在這個文檔中使用/data/work。請注意,這不能是您的「Go安裝」路徑相同。
mkdir -p /data/work

export GOPATH=/data/work

為了方便。添加工作區的bin到PATH中
export PATH=$PATH:$GOPATH/bin

4、導入路徑

一個導入路徑是唯一標識一個包的字元串。一個包的導入路徑對應於它在工作區內或遠程存儲庫中的位置。

從標准庫的軟體包中給出了短的導入路徑等。對於您自己的包,您必須選擇不可能和未來添加到標准庫或其他外部庫的基礎路徑沖突的路徑。

注意,你不需要將你的代碼發布到一個遠程存儲庫之前,你可以建立它。這只是一個很好的習慣來組織你的代碼,如果你有一天會出版它。在實踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標准庫和更大的去生態系統。

我們將使用github.com/user作為我們的基本路徑。在您的工作區中創建一個目錄,以保持源代碼:
mkdir -p $GOPATH/src/github.com/user

5、第一個項目

編譯並運行一個簡單的程序,首先選擇一個包的路徑(我們將使用github.com/user/hello)和創建在您的工作區相應的軟體包目錄:
mkdir $GOPATH/src/github.com/user/hello

創建名叫hello.go的文件,上面創建過,此處略過。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello

或者:
hello

如果你使用的是一個源代碼管理系統,現在是一個很好的時間來初始化一個存儲庫,添加文件,並提交你的第一次更改。再次,這一步是可選的:您不需要使用源代碼管理來寫代碼。
cd $GOPATH/src/github.com/user/hello

git init

Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/

git add hello.go

git commit -m "first commit"

[master (root-commit) bbfb477] first commit

6、first library

mkdir $GOPATH/src/github.com/user/stringutil

下一步,在目錄下創建一個名為reverse.go文件中有下列內容:
// Package stringutil contains utility functions for working with strings.

package stringutil

// Reverse returns its argument string reversed rune-wise left to right.

func Reverse(s string) string {

r := []rune(s)

for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {

r[i], r[j] = r[j], r[i]

}

return string(r)

}

使用go build測試包的編譯
$ go build github.com/user/stringutil

如果當前位置源碼包目錄,只需要:
go build

上面操作並不會產生一個輸出文件,必須使用go install,把包和對象輸出到工作去的pkg目錄內

確認stringutil包創建完成後,修改原始hello.go,使用stringutil包:
package main

import (

"fmt"

"github.com/user/stringutil"

)

func main() {

fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))

}

無論使用go安裝包還是二進制文件,所有相關的依賴都會自動安裝。所以當你安裝hello程序時:
$ go install github.com/user/hello

對應的stringutil包會自動安裝好。

執行新的hello程序,可以看到消息已經被反轉
# hello

Hello, Go!

完成上面操作之後,工作區應該為:
├── bin

│ └── hello # command executable

├── pkg

│ └── linux_amd64 # this will reflect your OS and architecture

│ └── github.com

│ └── user

│ └── stringutil.a # package object

└── src

└── github.com

└── user

├── hello

│ └── hello.go # command source

└── stringutil

└── reverse.go # package source

注意:go install會把庫文件stringutil.a放到pkg/linux_amd64下邊(目錄結構跟源代碼結構一樣)。這樣可以go命令可以直接找到對應的包對象,避免不必要的重復編譯。linux_amd64是為了根據操作系統和你的系統架構交叉編譯。

所有Go可執行程序都通過靜態方式鏈接在一起,所以在運行時是不需要相關的包對象(庫)。

7、包命令

所有的Go源代碼都以下面的語句開始:
package name

其中name就是包引用默認的名稱,一個包中的所有文件必須使用同一個包名,可執行命令必須是main。

一個二進制文件下所有的包名不需要唯一,但是引用路徑必須唯一

8、測試

Go自帶了一個輕量級的測試框架,由go test和testing包組成。

可以通過新建xx_test.go寫一個測試,其中包含若干個TestXXX函數。測試框架會自動執行這些函數;如果函數中包含tError或t.Fail, 對應的測試會被判為失敗。

添加一個針對stringutil的測試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內容:
package stringutil

import "testing"

func TestReverse(t *testing.T) {

cases := []struct {

in, want string

}{

{"Hello, world", "dlrow ,olleH"},

{"Hello, 世界", "界世,olleH"},

{"", ""},

}

for _, c := range cases {

got := Reverse(c.in)

if got != c.want {

t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)

}

}

}

#通過go test測試
# go test github.com/user/stringutil

ok github.com/user/stringutil 0.002s

#同樣的,在包文件夾下可以忽略路徑而直接執行go test
[root@zabbix stringutil]# go test

PASS

ok github.com/user/stringutil 0.002s

9、遠程包

包的引用路徑用來描述如何通過版本控制系統獲取包的源代碼。go工具通過引用路徑自動從遠程代碼倉庫獲取包文件。比如本文中用的例子也對應的保存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接獲取、生成、安裝對應的包。
[root@zabbix ~]# go get github.com/golang/example/hello

[root@zabbix ~]# $GOPATH/bin/hello

Hello, Go examples!

如果工作區中不存在對應的包,go會將對應的包放到GOPATH環境變數指明的工作區下。(如果包已經存在,go跳過代碼拉去而直接執行go install)
建議詳細看一下http://www.linuxprobe.com/set-go-env.html這個,有圖文

『陸』 如何編譯arm linux的go

Golang也就是Go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後Google強大靠山什麼的就不多說了。Golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布ARM平台的二進制安裝包。ARM平台沒辦法直接從官網下載二進制安裝包來安裝,好在Golang是支持多平台並且開源的語言,因此可以通過直接在ARM平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設置Golang編譯環境變數、編譯、配置Golang行環境變數等步驟。
註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。

1、編譯工具配置
據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:
1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。
1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安裝。
安裝完成後可以輸入 gcc --version命令驗證是否成功安裝。

2、獲取golang源代碼
2.1 直接從官網下載源代碼壓縮包。
golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:https://storage.googleapis.com/golang/go1.4.1.src.tar.gz
2.2 使用git工具獲取。
golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。
2.2.1 首先確認ARM平台上已經安裝了git工具,可以使用git --version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:http://git-scm.com/download/linux
2.2.2 克隆遠程golang的git倉庫到本地
在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:
git clone https://go.googlesource.com/go
大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:
git clone https://github.com/golang/go.git
視網路情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =
下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cd go命令進入該目錄。
執行下面命令檢出go1.4.1版本的源代碼,因為現在已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:
git checkout go1.4.1
至此,最新1.4.1發行版的源代碼獲取完畢

3、設置golang的編譯環境變數
主要有GOROOT、GOOS、GOARCH、GOARM四個環境變數需要設置,先解釋四個環境變數的意義。
3.1 GOROOT
主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變數,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設置為go目錄的路徑。
3.2 GOOS和GOARCH
分別代表編譯的目標系統和平台,可選值如下:

GOOS GOARCH
darwin 386
darwin amd64
dragonfly 386
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設置為linux,GOARCH設置為arm。
3.3 GOARM
表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。
總結下來,在樹莓派上設置golang的編譯環境變數,可編輯$HOME/.bashrc文件,在末尾添加下面內容:
export GOROOT=你的go目錄路徑
export GOOS=linux
export GOARCH=arm
編輯完後保存,執行source ~/.bashrc命令讓修改生效。

4、編譯源代碼
環境變數配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬體情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環境變數
編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到PATH環境變數中。同樣編輯~/.bashrc文件,因為前面設置過GOROOT環境變數指向go目錄了,所以只需要在末尾加上
export PATH=$PATH:$GOROOT/bin
保存後同樣執行source ~/.bashrc命令讓環境變數生效。

至此,golang源代碼編譯安裝成功。執行go version應該就能看到當前golang的版本信息,表示編譯安裝成功。

『柒』 如何在32位ubuntu11.10 下編譯android 4.0.1源碼和goldfish內核

一準備工作

1安裝javasdk6
(1)從jdk官方網站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下載jdk-6u29-linux-i586.bin文件。
(2)執行jdk安裝文件

[html] view plain
$chmod a+x jdk-6u29-linux-i586.bin
$jdk-6u29-linux-i586.bin

(3)配置jdk環境變數

[html] view plain
$sudo vim /etc/profile
[html] view plain
#JAVAEVIRENMENT
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存後退出編輯,並重啟系統。
2安裝依賴包

[html] view plain
$sudo apt-get install git-core gnupg flex bison gperf build-essential\
zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\
x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\
libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\
libxml2-utils

3用repo工具下載源碼
(1)初始化repo

[html] view plain
$cd ~
$mkdir bin
$curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
$chmod a+x ~/bin/repo
$exportPATH=$PATH:~/bin(導出環境變數)

(2)下載android最新源碼

[html] view plain
$mkdir android
$cd android
$ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1
...(輸入用戶名和郵箱名)
$repo sync -j5
...(此處用5個線程開始下載源碼,下載過程及其漫長,需要耐心等待)

二 編譯源碼
1開始編譯

[html] view plain
$source build/envsetup.sh
includingdevice/samsung/maguro/vendorsetup.sh

includingdevice/samsung/tuna/vendorsetup.sh

includingdevice/ti/panda/vendorsetup.sh

includingsdk/bash_completion/adb.bash

$make-j4(此處用4個線程編譯)

編譯完成後,會看到類似的輸出:

[html] view plain
Targetramdisk:out/target/proct/generic/ramdisk.img
Targetuserdatafsimage:out/target/proct/generic/userdata.img
Installedfilelist:out/target/proct/generic/installed-files.txt

2編譯遇到的問題
編譯錯誤:

[html] view plain
<命令行>:0:0:錯誤:「_FORTIFY_SOURCE」重定義[-Werror]

<built-in>:0:0:附註: 這是先前定義的位置

cc1plus:所有的警告都被當作是錯誤

make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]錯誤 1

原因:
因機器上的gcc版本過高,需替換成4.4.6重新進行編譯。
解決方法:
1)安裝4.4版本的gcc和g++

[html] view plain
$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2)設置gcc版本,使gcc鏈接到gcc-4.4

[html] view plain
$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3)設置g++版本,使g++鏈接到g++-4.4

[html] view plain
$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++

4)設置完畢後,重新進行編譯即可

3從模擬器啟動編譯後的鏡像文件
1)設置環境變數:

[html] view plain
export PATH=~/android/out/host/linux-x86/bin:$PATH

export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic

其中linux-x86/bin存放模擬器emulator工具,proct/generic存在編譯後的鏡像文件。

2)啟動模擬器

[html] view plain
$emulator

emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)

啟動後的截圖:

三 編譯androidgoldfish內核
1)進入android4.0.1源碼目錄,下載goldfish內核源碼

[html] view plain
$ mkdir kernel
$ cd kernel
$ git clone http://android.googlesource.com/kernel/goldfish.git
$ cd goldfish
$ git branch -a
* (no branch)

master

remotes/origin/HEAD -> origin/master

remotes/origin/android-goldfish-2.6.29

remotes/origin/master

$ git checkout remotes/origin/android-goldfish-2.6.29

2)修改Makefile

[html] view plain
goldfish$ gedit Makefile

修改

[html] view plain
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=



[html] view plain
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-

3)導出交叉編譯器目錄為環境變數
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

4)編譯內核

[html] view plain
goldfish$ make goldfish_armv7_defconfig

goldfish$ make

編譯完成後,可看到類似如下的輸出:

[html] view plain
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

5)從模擬器中啟動內核鏡像

[html] view plain
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &

啟動模擬器後,可從Settings->System->AboutPhone中查看內核版本信息。

『捌』 mac下打patch後編譯安裝golang

因為業務上的需求,架構師改了hack了一下golang的源碼,放出一個patch文件,給源碼打了patch之後,需要重新編譯go源碼,
我是用 brew 安裝的golang, 先用 go env 看看

鎖定了源碼的路徑: /usr/local/Cellar/go/1.7.5/libexec

Go從1.5版本開始實現「自舉」(Bootstrap),也就是用Go來實現Go、用Go來編譯Go,因此這里的意思是系統默認用go1.4來編譯golang,
但是我的系統裡面並沒有go1.4,這里偷個懶

等待編譯測試完成即可。

『玖』 新人求教 驅動源碼編譯安裝

1、安裝scons
(1) 下載python2.7, 使用x86_32位,因為scons只有32位安裝包可用;
(2) 下載scons2.3.0;
(3) 安裝python 和 scons, 將C:\Python27\Scripts寫入PATH;
(4) 下載安裝pywin32 ,It is recommended you install pywin32 if you want to do parallel builds (scons -j)

2、安裝boost庫(1.49版本).
解壓後雙擊bootstrap.bat,生成bjam.exe後,cd到目錄c:\boost下,(將boost_1_49更名為boost了)編譯boost。
編譯命令:C:\boost>bjam variant=release --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
這是使用VS2010環境編譯的release版本,編譯完成後,生成C:\boost\stage\lib文件夾,下面有6個lib庫:

如果要編譯成debug版本,使用命令:bjam variant=debug --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32

編譯完成後,生成C:\boost\stage\lib文件夾,下面有10個lib庫和dll:

此處為MongoDB文檔中對於編譯boost庫的要求原文:
When using bjam, MongoDB expects
variant=debug for debug builds, and variant=release for release builds
threading=multi
link=static runtime-link=static for release builds
address-model=64 for 64 bit(64位的話,把32換為64)。link=static runtime-link=static,boost需要編譯成靜態庫,因為mongodb只會去鏈接boost的靜態庫
address-model=64在win7 64環境下此項必須,不加在編譯mongodb的c++ client時會出現鏈接錯誤。

3、下載mongo2.4.6源碼 http://www.mongodb.org/downloads官網下載
編譯Mongoclient.lib

cmd命令提示符下,cd到解壓後的文件目錄,例如我放在了E盤,E:\mongodb-src-r2.4.6,輸入命令:
scons –-dd --32 mongoclient.lib // build C++ client driver library
Add --64 or --32 to get the 64- and 32-bit versions, respectively. Replace --release with --dd to build a debug build.
編譯後在mongodb\build\win32\32\dd\client_build\生成mongoclient.lib.

4、測試程序
就用Mongodb自帶的例子吧,使用VS2010打開E:\mongodb-src-r2.4.6\src\mongo\client\examples中的simple_client_demo.vcxproj,編譯,會提示生成simple_client_demo.sln,保存。
使用debug模式,配置工程環境:打開工程->屬性,配置Configuration Properties下的VC++ Directories,頭文件路徑添加C:\boost,Lib庫路徑添加boost的lib,以及mongodb client的lib:
C:\boost\stage\lib

E:\mongodb-src-r2.4.6\build\win32\32\dd\client_build
進入C/C++下面的Code Generation,將Runtime Library設置為Multi-threaded Debug (/MTd)
進入Linker下面的Input,設置Additional Dependencies,添加ws2_32.lib,psapi.lib,Dbghelp.lib,mongoclient.lib
將E:\mongodb-src-r2.4.6\build\win32\32\dd\mongo\base下生成的error_codes.h和error_codes.cpp文件,拷貝到E:\mongodb-src-r2.4.6\src\mongo\base目錄下。
ok,編譯、運行.

5、問題解決
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(dbclient.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(assert_util.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(jsobj.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(status.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(mutexdebugger.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj

VS的版本不匹配,lib是在更高級的版本中編譯生成的,而使用的時候,是在低級版本中使用的,所以出現了不匹配的錯誤。例如,我在VS2010 SP1和VS2012的環境下編譯的,而使用是在VS2010上使用,所以在編譯時,出現了以上問題。

1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymGetMoleInfo64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr

在工程依賴庫中添加Dbghelp.lib

其它問題,看看你手頭的編譯器、編譯出來的boost庫版本、mongoclient.lib的版本,是否對應好了。

閱讀全文

與gofi源碼編譯環境安裝相關的資料

熱點內容
怎麼投訴蘋果商店app 瀏覽:468
華為手機如何看有多少個app 瀏覽:732
btr如何管理別的伺服器 瀏覽:408
spwm軟體演算法 瀏覽:184
70多歲單身程序員 瀏覽:221
高考考前解壓拓展訓練 瀏覽:217
用紙做解壓玩具不用澆水 瀏覽:584
谷輪壓縮機序列號 瀏覽:736
牛頓插值法編程 瀏覽:366
php多用戶留言系統 瀏覽:731
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444
44引腳貼片單片機有哪些 瀏覽:692
阿里程序員腦圖 瀏覽:189
廣東編程貓學習班 瀏覽:708
上海數控編程培訓學校 瀏覽:313
怎麼下載我的解壓神器 瀏覽:634