求助,时间java代码混淆 反编译载入后编译出现如下问题

&& 查看话题
【求助】UDF编译成功但导入边界条件时报错【已解决】
麻烦达人老兄们救急,这个程序是两相流里第二相入口速度等于某指定面第二相速度的程序,编译成功,但是在边界条件里选中此UDF即报错,ACCESS_VIOLATION。不知是何缘故,请各位不吝赐教,拜谢!
#include "udf.h"
#include "mem.h"
DEFINE_PROFILE(inlet_velocity,mix_thread,index)
& &Domain *domain=Get_Domain(1);
& &Thread *thread_s;
& &real vel,area,area_tot,vel_
& &real A;
& &mix_thread=Lookup_Thread(domain,4);
& &thread_s=THREAD_SUB_THREAD(mix_thread,3);
& &begin_f_loop(f,thread_s)
& &&&F_CENTROID(x,f,thread_s);
& &&&vel=C_W(f,thread_s);
& &&&F_AREA(A,f,thread_s);
& &&&area=NV_MAG(A);
& &&&area_tot+=
& &&&vel_ave+=vel*
& &end_f_loop(f,thread_s)
& &vel_ave/=area_
我刚初学UDF,很多东西还不甚明了,所以无法赐教了。
但是我还是有点关于写程序的小建议:希望在写程序的时候尽量在每个语句后面写上注释,比方说定义的是什么变量或常量、该步计算是什么作用等等,这样做的好处第一可以给自己编程理清思路、第二让他人更容易的读懂程序。这是我学习编程很多年来感觉很不错的一个好习惯。
虽然写注释有点费时,但说不定能省掉更多的调试查错的时间,得大于失的! 既然是设定两相流里第二相入口速度等于某指定面第二相速度,可程序中没有F_PROFILE宏,不知是哪一步做出了赋值。
另外,DEFINE_PROFILE宏是没有返回值的,所以最后一句“vel_ave/=area_tot”(这句应该是求个平均速度吧),好像并没有什么作用,因为都是函数内定义的局部变量,算完就没了。 不好意思,又占一楼~~
begin_f_loop循环中的第一句,“ F_CENTROID(x,f,thread_s);”,获取面的重心坐标,也没什么用,因为后面完全没用上这个坐标值。
接下来一句是获取w方向的速度,应该没问题。
再下来两句是求取当前面的面积(我还没弄懂F_AREA的作用,不过猜的应该没错)。
再往下是对面积合速度积分,end_f_loop循环结束。
循环后面,即最后一句是求取平均速度。
如果没有速度分布的话,我想后面再加上这么一段应该就可以了:
begin_f_loop(f, thread_s)
&&F_PROFILE(f, thread_s, index)=vel_ /*将平均速度赋值给入口边界*/
end_f_loop(f, thread_s)
程序开始的Get_Domian(1),你求的是第二相,那么这个参数“1”是不是有点问题了?因为1指的是混合相,3才指的是第二相。不过后面你还有Lookup_Thread和THREAD_SUB_THREAD,这两个是什么作用我还不清楚,所以前面的1也可能是对的。你自己确认一下有没有错吧~~ Originally posted by sghudng at
麻烦达人老兄们救急,这个程序是两相流里第二相入口速度等于某指定面第二相速度的程序,编译成功,但是在边界条件里选中此UDF即报错,ACCESS_VIOLATION。不知是何缘故,请各位不吝赐教,拜谢!
#include "u ... 指教的是,可能自己看得懂,但是求助的时候还是应该写清楚的 Originally posted by
既然是设定两相流里第二相入口速度等于某指定面第二相速度,可程序中没有F_PROFILE宏,不知是哪一步做出了赋值。
另外,DEFINE_PROFILE宏是没有返回值的,所以最后一句“vel_ave/=area_tot”(这句应该是求个平均 ... 我写这个程序的时候最开始是有写这句的,但是我一直没纠结明白这个宏返回空值和我要从这个程序里得到一个速度值怎么去协调,开始写了F_PROFILE,编译的时候报错了,我以为是返回空值不能返回这个速度值,就删掉了,就不报错了…… Originally posted by
不好意思,又占一楼~~
begin_f_loop循环中的第一句,“ F_CENTROID(x,f,thread_s);”,获取面的重心坐标,也没什么用,因为后面完全没用上这个坐标值。
接下来一句是获取w方向的速度,应该没问题。
再下来两 ... 面坐标好像的确是多余了……因为我一直以为它是和f一起指定一个小面的。
关于domain的问题,你不清楚的那两句,第一句是指向已知ID的面,第二句是指面上的第二相,因为里面所用的变量都是thread而不是domain,所以我就这么写了 Originally posted by sghudng at
我写这个程序的时候最开始是有写这句的,但是我一直没纠结明白这个宏返回空值和我要从这个程序里得到一个速度值怎么去协调,开始写了F_PROFILE,编译的时候报错了,我以为是返回空值不能返回这个速度值,就删掉 ... F_PROFILE就是用来给边界条件赋值的,通常都会和DEFINE_PROFILE配合使用。因为DEFINE_PROFILE也是个没有返回值的宏,所以F_PROFILE就起到了返回值的作用,你可以再看看帮助文档中的示例就清楚了。 Originally posted by sghudng at
面坐标好像的确是多余了……因为我一直以为它是和f一起指定一个小面的。
关于domain的问题,你不清楚的那两句,第一句是指向已知ID的面,第二句是指面上的第二相,因为里面所用的变量都是thread而不是domain, ... 这样的话我还发现一个问题:
mix_thread是Fluent指定进来的变量,它指向的是你要定义的边界面。而你用Lookup_Thread函数把mix_thread重指向了。指向的应该是你要计算平均流速的某个其他面,而不是原来的边界面了。
如此一来,函数中没有了指向原来边界面的指针,那么即使加上我给你的那段循环也无法给边界条件赋值的!
你要另外用一个指针来指向你要求取平均速度的面!mix_thread不能动的! Originally posted by
这样的话我还发现一个问题:
mix_thread是Fluent指定进来的变量,它指向的是你要定义的边界面。而你用Lookup_Thread函数把mix_thread重指向了。指向的应该是你要计算平均流速的某个其他面,而不是原来的边界 ... 你说的对。现在我参考大家的意见把程序改了,可是结果还是一样,编译成功,但是在边界条件里一导入UDF,就报错……我都不知道问题出在哪了 Originally posted by sghudng at
你说的对。现在我参考大家的意见把程序改了,可是结果还是一样,编译成功,但是在边界条件里一导入UDF,就报错……我都不知道问题出在哪了 你把改过后的程序再贴上来看看 #include "math.h"
#include "udf.h"
DEFINE_PROFILE(inlet_velocity,t,index)
& & Domain *domain=Get_Domain(1);
& & Thread *thread_s,*mix_
& & real vel,area,area_tot,vel_
& & real A;
& & mix_thread=Lookup_Thread(domain,4);
& & thread_s=THREAD_SUB_THREAD(mix_thread,3);
& & begin_f_loop(f,thread_s)
& && &&&vel=C_W(f,thread_s);
& && &&&F_AREA(A,f,thread_s);
& && &&&area=NV_MAG(A);
& && &&&area_tot+=
& && &&&vel_ave+=vel*
& & end_f_loop(f,thread_s)
& && &&&vel_ave/=area_
& & begin_f_loop(f,t)
& && &&&F_PROFILE(f,t,index)=vel_
& & end_f_loop(f,t)
} 获取w方向速度有问题,应该是用F_W(),而不是C_W()。
#include "math.h",这个必须么?有#include "udf.h"就可以了吧 笔误!我原来写的时候一直是用的F_W,可是刚才改动比较大,写错了。刚才看到论坛上有人问了类似的一个程序,下面有解答说face_t f里的f是指向要定义的这个面的,是不是不能就这样把f直接用于我引用的这个面?你知不知道这里要怎么改?我还从来没见过有定义两个f的 Originally posted by sghudng at
笔误!我原来写的时候一直是用的F_W,可是刚才改动比较大,写错了。刚才看到论坛上有人问了类似的一个程序,下面有解答说face_t f里的f是指向要定义的这个面的,是不是不能就这样把f直接用于我引用的这个面?你知 ... 我觉得这个f应该没问题,它只是作为一个循环变量嘛,在不同的循环里面它指向的是各自的面线程。
如果不放心的话就定义两个好了:face_f f1,f2; 然后两个循环分开用。 Originally posted by
我觉得这个f应该没问题,它只是作为一个循环变量嘛,在不同的循环里面它指向的是各自的面线程。
如果不放心的话就定义两个好了:face_f f1,f2; 然后两个循环分开用。 我也觉得,毕竟只是一个索引嘛,进循环就初始化了,也没什么关系。唉,到这一步我是真不知道哪里还有问题了……可就是一直报错 可能还有这么几个问题:
因为报错提示ACCESS_VIOLATION,所以你把定义的几个变量,就是area_tot和vel_ave做个赋初值操作,也就是在定义的时候赋个值。
还有UDF手册说F_W这些宏只能在基于压力的求解器下使用,你检查下你用的求解器是基于压力的还是密度的。(好像一般都是压力,很少有密度的) 基于压力的是没问题,不过我觉得您说的赋初始值很有道理,我也看到很多程序上都开始给个0. Originally posted by
可能还有这么几个问题:
因为报错提示ACCESS_VIOLATION,所以你把定义的几个变量,就是area_tot和vel_ave做个赋初值操作,也就是在定义的时候赋个值。
还有UDF手册说F_W这些宏只能在基于压力的求解器下使用,你 ... 我发现了一个问题:如果按照你说的把那几个area,vel之类的赋初始值,但是帮助里说area是个向量,所以我在循环里才在后面加了一句取模,向量的话初始值可就不太好给了。还是你的意思只是把area_tot和vel_ave这两个赋初值? Originally posted by sghudng at
我发现了一个问题:如果按照你说的把那几个area,vel之类的赋初始值,但是帮助里说area是个向量,所以我在循环里才在后面加了一句取模,向量的话初始值可就不太好给了。还是你的意思只是把area_tot和vel_ave这两 ... area_tot和vel_ave开始给个零值,这两个有点特殊是在第一次循环的时候使用了它们的初值做了累加运算;而其他的随便给什么初值或者不给都没问题,因为没有用到初值。
我能想到的就这么多了,还是出错的话只能坐等高手前来!建议你追加些金币奖励,不然没法吸引别人来看了。
var cpro_id = 'u1216994';
欢迎监督和反馈:本帖内容由
提供,小木虫仅提供交流平台,不对该内容负责。欢迎协助我们监督管理,共同维护互联网健康,如果您对该内容有异议,请立即发邮件到
联系通知管理员,也可以通过QQ周知,我们的QQ号为:8835100
我们保证在1个工作日内给予处理和答复,谢谢您的监督。
小木虫,学术科研第一站,为中国学术科研研究提供免费动力
广告投放请联系QQ: &
违规贴举报删除请联系邮箱: 或者 QQ:8835100
Copyright &
eMuch.net, All Rights Reserved. 小木虫 版权所有求助,时间代码载入后编译出现如下问题_百度知道
求助,时间代码载入后编译出现如下问题
提问者采纳
报告将会包含更多的信息
&Show verbose output during compilation&
在 文件&首选项 中启用
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求助,时间代码载入后编译出现如下问题_百度知道
求助,时间代码载入后编译出现如下问题
提问者采纳
性别/&#47..,char sex,/姓名/ Person(string na=&/class Person{/学号/;&#47: void set(成绩年龄public#include#includ&#47:&&#47,char s,int sc,int age)
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Android源代码下载及编译开发-红联Linux系统门户
您的位置:
&& 查看内容 - - -
Android源代码下载及编译开发
velcbo发布于
&&字号: &&&&(网友评论&0&条)&
Ubuntu 环境下载 Android 代码
1.Git 和 Repo 的安装
首先确保在当前用户的主目录下创建一个 /bin 目录(如果没有的话),然后把它 (~/bin) 加到 PATH 环境变量中。
linux@ubuntu:~$ vim .bashrc 添加:
export PATH=$PATH:~/bin
linux@ubuntu:~$ source .bashrc
linux@ubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/a/bin
linux@ubuntu:~$ sudo apt-get install git-core
linux@ubuntu:~$ sudo apt-get install curl
这两条命令会从互联网的软件仓库中安装 git-core 和 curl 。 其中 curl 是一个利用 URL 语法在命令行方式下工作的文件传输工具,它支持很多协议,包括 FTP 、 FTPS 、 HTTP 、 HTTPS 、 TELENT 等,我们需要安装它从网络上获取 Repo 脚本文件。
对于android2.3.3可获取:
@ubuntu:~$ curl
> ~/bin/repo
对于android4.1可获取:
这句命令会下载 repo 脚本文件到当前主目录的 bin 目录下,并保存在文件 repo 中。 最后我们需要给 repo 文件可执行权限 linux@ubuntu:~$ sudo chmod a+x /home/a/bin/repo
接下来我们就可以利用 repo 脚本和 Git 、 curl 软件获取 Android 的源代码了。
但许多情况下,可能你根本无法下载,下面列举了一些问题现象和解决的办法:
linux@ubuntu:~$ cat /etc/issue
Ubuntu 12.04.2 LTS \n \l
linux@ubuntu:~$ sudo lsb_release -a
[sudo] password for jianguoliao:
No LSB modules are available.
Distributor ID: Ubuntu
Description:
Ubuntu 12.04.2 LTS
linux@ubuntu:~$
上面命令查看自己的ubuntu的版本号:12.04
1、先是系统查看是32位的还是64位
linux@ubuntu:~$ getconf LONG_BIT
linux@ubuntu:~$ getconf WORD_BIT
linux@ubuntu:~$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xae048fd2a071afcb017d35e27340b2, stripped
linux@ubuntu:~$
linux@ubuntu:~$
linux@ubuntu:~$
linux@ubuntu:~$ uname -m
uname -m 如果出现i386 i686 i586则是32位 如果出现amd64 则是64位系统
2、安装jdk1.6
方案一,可能会出现错误
Installing the JDK
--------------------------------------------------------------------------------
The Sun JDK is no longer in Ubuntu's main package repository. In order to download it, you need to add the appropriate repository and indicate to the system which JDK should be used.
Java 6: for Gingerbread and newer
$ sudo add-apt-repository "deb
lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
上面可能出现如下错误;
linux@ubuntu:~$ sudo apt-get install sun-java6-jdk
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
现在没有可用的软件包 sun-java6-jdk,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 sun-java6-jdk 没有可供安装的候选者
建议采用下面这个方法,我12.04的ubuntu版本,64位的用官方网站用的第一种方法没有成功
sudo gedit /etc/apt/sources.list
打开源列表,在最后一行添加
hardy multiverse
保存退出。
2、sudo apt-get update
3、sudo apt-get install sun-java6-jdk
4、linux@ubuntu:~$ sudo update-alternatives --config java
There is only one alternative in link group java: /usr/lib/jvm/java-6-sun/jre/bin/java
Nothing to configure.
5、linux@ubuntu:~$ java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)
linux@ubuntu:~$
Installing required packages (Ubuntu 12.04)
--------------------------------------------------------------------------------
Building on Ubuntu 12.04 is currently only experimentally supported and is notguaranteed to work on branches other than master.
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
3、安装git
sudo apt-get install git-core curl
这条命令会从互联网的软件仓库中安装 git-core 和 curl
Installing Repo
--------------------------------------------------------------------------------
Make sure you have a bin/ directory in your home directory and that it is included in your path:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Download the Repo tool and ensure that it is executable:
> ~/bin/repo
$ chmod a+x ~/bin/repo
linux@ubuntu:~$
> ~/bin/repo
% Received % Xferd
Average Speed
0 --:--:--
0:04:00 --:--:--
0curl: (7) Failed to connect to 05:c00::88: Network is unreachable
下面为两种解决办法,任何一种都可以
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" >~/bin/repo
打开 gedit /etc/hosts
添加如下内容:
74.125.237.1 dl-
linux@Ubuntu:~$ curl
> ~/bin/repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 889 0 0 :00:01 0:00:01 --:--:-- 24221
linux@ubuntu:~$
chmod a+x ~/bin/repo
Initializing a Repo client
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u
遇到如下问题:
linux@ubuntu:~/WORKING_DIRECTORY$ repo init -u
gpg: key 920F5C65: "Repo Maintainer " not changed
gpg: key : public key "Conley Owens " imported
gpg: Total number processed: 2
gpg: imported: 1 (RSA: 1)
gpg: unchanged: 1
fatal: Cannot get
fatal: error [Errno 101] Network is unreachable
* [new tag] v1.9.5 -> v1.9.5
* [new tag] v1.9.6 -> v1.9.6
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0
curl: (22) The requested URL returned error: 404
Server does not provide clone. ignoring.
remote: Counting objects: 92, done
remote: Finding sources: 100% (92/92)
remote: Total 816 (delta 96), reused 816 (delta 96)
Receiving objects: 100% (816/816), 708.29 KiB | 247 KiB/s, done.
Resolving deltas: 100% (96/96), done.
* [new branch] android-1.6_r1 -> origin/android-1.6_r1
解决方法,官网说明,和网上统一口径,如下:
1, 先按官网的步骤一步步执行
2,当遇到上述问题后,用浏览器登录,并用gmail帐号登录;
3, 点击网页上的“允许访问”,得到类似的结果:
login git-. password
machine android- login git-. password
将上边的两行追加到~/.netrc文件结尾。(如果你的linux系统中从来没有建立过此文件,就在home目录下建立.netrc文件,将上面的信息加到新建的文件中去),
4,下载地址的URI更改为(中间加上了“/a”)。
因为访问基本是匿名的,为了防止连接过多,对同一IP地址的连接数做了一定的限制。用gmail帐号进行认证。
在公司网络内或者用虚拟机下载的话,会经常遇到这问题。
如果遇到下面问题
linux@ubuntu:~/WORKING_DIRECTORY$
linux@ubuntu:~/WORKING_DIRECTORY$ repo init -u
Your Name [jianguo liao]: jianguo liao
Your Email []:
Your identity is: jianguo liao
is this correct [y/N]? y
repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY
linux@ubuntu:~/WORKING_DIRECTORY$ repo init -u
Your identity is: jianguo liao
If you want to change this, please re-run 'repo init' with --config-name
或者:注意没有/a哦
linux@ubuntu:~/WORKING_DIRECTORY$ repo init -u
Your Name [jianguo liao]: jianguo liao
Your Email []:
Your identity is: jianguo liao
is this correct [y/N]? y
repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY
linux@ubuntu:~/WORKING_DIRECTORY$
linux@ubuntu:~/WORKING_DIRECTORY$ repo init -u
-b android-4.0.1_r1
.repo/manifests/: discarding 88 commits
Your identity is: jianguo liao
If you want to change this, please re-run 'repo init' with --config-name
repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY
linux@ubuntu:~/WORKING_DIRECTORY$
好吧,接下来最后一步了
$ repo sync
网上有朋友建议,写个脚本如下:
#!/bin/bash
echo "======start repo sync======"
while [ $? = 1 ]; do
echo "======sync failed, re-sync again======"
其中还遇到如下问题,经常提示如下信息,网上有朋友建议:
error: Failed connect to :443;Connection refused while accessing
fatal: HTTP request failed
error: Cannot fetch platform/tools/motodev
error: Cannot fetch platform/frameworks/base
error: Cannot fetch platform/prebuilts/sdk
error: Exited sync due to fetch errors
等错误信息。
解决方法:编辑/etc/hosts文件
$ sudo gedit /etc/hosts
增加下面内容,保存
74.125.71.82
74.125.31.82
203.208.46.172 cache.
59.24.3.173cache.
此外,还需下载编译库等工具,可用下面命令:
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl python sun-java5-jdk valgrind lib32readline5 wx-common
这里部分工具是专用于AMD64 位环境的有时Java5 可能无法下载,可有以下尝试解决此问题:
第一种尝试:下载java 1.5 的安装bin 包手动安装,最终失败, 具体过程如下:
download java5:
chmod a+x, ./xxxx.bin
mkdir /usr/lib/jvm
cp jdk-5.0u18-dlj-linux-i586.bin to /usr/lib/jvm
run jdk-5.0u18-dlj-linux-i586.bin to install java into /usr/lib/jvm/jdk1.5.0_18
add below lines in /etc/enviroment:
JAVA_HOME=/usr/lib/jvm/jdk1.5.0_18
JRE_HOME=/usr/lib/jvm/jdk1.5.0_18/jre
CLASSPATH=.:/usr/lib/jvm/jdk1.5.0_18/lib:/usr/lib/jvm/jdk1.5.0_18/jre/lib
$ java -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
第二种尝试:非常简单,但是有效:
修改source ,将9.10 的源改成9.04 的源。源在/etc/apt/source.list :
jaunty main restricted universe multiverse
jaunty-security main restricted universe multiverse
jaunty-updates main restricted universe multiverse
jaunty-proposed main restricted universe multiverse
jaunty-backports main restricted universe multiverse
jaunty main restricted universe multiverse
jaunty-security main restricted universe multiverse
jaunty-updates main restricted universe multiverse
jaunty-proposed main restricted universe multiverse
jaunty-backports main restricted universe multiverse
运行:sudo apt-get update 之后,用sudo apt-get install sun-java5-jdk 即可像以往一样安装java 1.5
或按以下源添加JDK:
执行sudo gedit /etc/apt/sources.list,
添加以下内容,将10.04的源改成9.04的源。
jaunty multiverse
jaunty-updates multiverse
然后sudo apt-get update
再用sudo apt-get install sun-java5-jdk
安装后的基本设置:
sudo update-alternatives --config java
sudo update-java-alternatives -s java-1.5.0-sun
sudo add-apt-repository "deb
lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
安装后的基本设置:
sudo update-alternatives --config java
sudo update-java-alternatives -s java-1.5.0-sun
这时候再用java -version 就能看到java 1.5 已经正常工作了最后不要忘记把源换回9.10的
2 、初始化版本库 如果是想把 Android 当前主线上最新版本的所有的 sourcecode 拿下来,我们需要 repo 的帮助。
先建立一个目录,比如 ~/myandroid ,进去以后用 repo init 命令即可。
repo init -u git://android.git.kernel.org/platform/manifest.git
对于android4,可使用下面命令:
repo init -u
-b android-4.0.1_r1
这个过程会持续很长的时间,具体要多少时间就取决于网络条件了 最后会看到
repo initialized in /myandroid 这样的提示,就说明本地的版本库已经初始化完毕,并且包含了当前最新的 sourcecode 。
如果想拿某个 branch 而不是主线上的代码,我们需要用 -b 参数制定 branch 名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
另一种情况是,我们只需要某一个 project 的代码,比如 kernel/common ,就不需要 repo 了,直接用 Git 即可。
git clone git://android.git.kernel.org/kernel/common.git
这也需要不少的时间,因为它会把整个 Linux Kernel 的代码复制下来。
如果需要某个 branch 的代码,用 git checkout 即可。比如我们刚刚拿了 kernel/common.get 的代码,那就先进入到 common 目录,然后用下面的命令:
git checkout origin/android-goldfish-2.6.27 -b goldfish
这样我们就在本地建立了一个名为 goldfish 的 android-goldfish-2.6.27 分支,代码则已经与 android-goldgish-2.6.27 同步。
我们可以通过 git branch 来列出本地的所有分支。 这里我们以 android-2.1_r1 这个分支为例:
linux@Ubuntu:~$ mkdir myandroid linux@ubuntu:~$ cd myandroid linux@ubuntu:~/myandroid$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r1
repo initialized in /home/a/myandroid
3 、同步版本库 使用 repo sync 命令,我们把整个 Android 代码树做同步到本地,同样,我们可以用类似 repo sync project1 project2 … 这样的命令来同步某几个项目 如果是同步 Android 中的单个项目,只要在项目目录下执行简单的 git pull 即可。 linux@ubuntu:~/myandroid$ repo sync 下载 android-sdk-2.1_r1 版本
linux@ubuntu:~$ # mkdir android-sdk-2.1_r1
linux@ubuntu:~$ # cd android-sdk-2.1_r1/
linux@ubuntu:~ android-sdk-2.1_r1
# repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-2.1_r1
linux@ubuntu:~$ android-sdk-2.1_r1
# repo sync
Gentoo 环境下载 Android 代码 同 ubuntu 类似,先下载 repo 和 git:
emerge net-misc/curl
emerge dev-util/git
编辑~/.bashrc 文件,把~/bin 目录加到PATH 后续操作与 ubuntu 相同
5 、通过 GitWeb 下载代码 另外,如果只是需要主线上某个项目的代码,也可以通过GitWeb 下载,在shortlog 利用关键字来搜索特定的版本,或者找几个比较新的tag 来下载还是很容易的。 Git 最初是为Linux 内核开发而设计,所以对其他平台的支持并不好,尤其是Windows 平台,必须要有Cygwin 才可以。现在,得益于msysgit 项目,我们已经可以不需要Cygwin 而使用Git 了。另外,Git Extensions 是一个非常好用的Windows Shell 扩展,它能与资源管理器紧密集成,甚至提供了Visual Studio 插件。它的官方网站上有一分不错的说明文档 ,感兴趣的朋友可以看一看。至于Git 的参考文档,我推荐Git Magic ,这里还有一个Git Magic 的中文版 。
source 命令的使用
source 命令: source 命令也称为“点命令”,也就是一个点符号(. )。
source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
#vim ~/.bashrc #source ~/.bashrc
Android 中 mm build 的方法也是一样
#source ./build/envsetup.sh
#cd android sub dir
#mm source
命令用法:
source FileName
作用: 在当前bash 环境下读取并执行FileName 中的命令。
注:该命令通常用命令“ .” 来替代 。
如:source .bash_rc 与 . .bash_rc 是等效的。
source 命令( 从 C Shell 而来) 是bash shell 的内置命令。点命令,就是个点符号,( 从Bourne Shell 而来) 是source 的另一名称。同样的,当前脚本中配置的变量也将作为脚本的环境,source( 或点) 命令通常用于重新执行刚修改的初始化文档,如.bash_profile 和 .profile 等等。
例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source 命令重新执行 .bash_profile 中的命令而不用注销并重新登录。比如您在一个脚本里export $KKK=111 , 假如您用./a.sh 执行该脚本,执行完毕后,您运行 echo $KKK , 发现没有值,假如您用source 来执行 ,然后再echo , 就会发现KKK=111 。因为调用./a.sh 来执行shell 是在一个子shell 里运行的,所以执行后,结构并没有反应到父shell 里,但是 source 不同他就是在本shell 中执行的,所以能够看到结果 source 命令的一个妙用在编译核心时,常常要反复输入一长串命令,如 make mrproper make menuconfig make dep make clean make bzImage ....... 这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。用source 命令可以办到这一点。它的作用就是把一个文件的内容当成是shell 来执行。先在/usr/src/linux- 2.4.20 目录下建立一个文件,取名为make_command :在其中输入如下内容:
make mrproper && make menuconfig && make dep && make clean && make bzImage && make modules && make modules_install && cp arch/i386/boot/bzImge /boot/vmlinuz_new && cp System.map /boot && vi /etc/lilo.conf && lilo -v 文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20 下输入 source make_command 就行了。这个文件也完全可以做成脚本,只需稍加改动即可。
这里主要是让大家理解source 的用法。如果你用的不是lilo 来引导系统,可以把最后两句话去掉。配置你自己的引导程序来引导新内核。 shell 编程中的命令有时和C 语言是一样的。&& 表示与,|| 表示或。把两个命令用&& 联接起来,如 make mrproper && make menuconfig ,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。
Ubuntu 下AMD64CPU 编译
Android 心得
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javadoc
切换到对应JAVA 编译环境 AMD64环境下 build android可能会遇到的问题:
1、 sudo apt-get install g++-4.2-multilib 或执行: sudo apt-get install g++-multilib 解决ld lstd++ 问题,编译adb时候出现 2、 sudo apt-get install zlib1g-dev
3、 sudo apt-get install lib32z1-dev lib32ncurses5-dev 解决ld -lz -lncurses 问题
4. cd /usr/lib32 sudo ln -s libX11.so.6 libX11.so 解决 libX11问题
5. g++和gcc 用4.3的版本,若不是4.3,用ln改一下: sudo ln -snf gcc-4.3 gcc sudo ln -snf g++-4.3 g++ sudo ln -snf cpp-4.3 cpp 6. 内存要多于1G。不然会在target dex的时候挂住。
Ubuntu环境下采用sudo apt-get安装eclipse后,install Android Gingerbread(2.3)的ADT:
Eclipse / Help / Install New Software / Add Location输入
这是ADT的安装网址,若出现安装问题,可能有以下原因:
1、通过Eclipse的Help->install new software,安装目录下的插件,解决wst.sse.core插件找不到的Bug
2、在Eclipse下通过Help->install new software安装,解决Eclipse插件GEF(Graphical Editing Framework)安装问题。
3、此时再安装ADT包不会存在插件找不到的提示,安装完后再通过ADT安装Android SDK即可。
来源:Linux社区
发表评论,与各位同人交流。回复请点击下方的我要评论按钮(游客可回复),要发表贴子请点击
=>Linux教程下载?“”(请点击),Linux教程免费下载。
=>求助Linux问题?论坛有39版块,覆盖所有Linux技术层面。前往“”
 |  |  |  |  |  |  |  |  |  |  |  | 
&2015 红联 Powered by SupSite}

我要回帖

更多关于 小颖java源代码反编译 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信