iar怎么分组编译

iar怎么分组编译,第1张

iar分组编译方法如下。

1、单击project—EditConfigurations然后可以new(新建)分组,当然也可以remove(删除)分组。

2、新建完成之后,针对不同的分组。可以实现选择性编译,对所有的文件进行相应的配置,让其分开分别编译。

第一种编译方法( 编译直接生成class 文件,执行需先创建包的路径)

假设当前目录为/src/java/ ,则编译命令为:

javac HelloWorld.java

假设当前目录为/src/ ,则编译命令为:

javac /src/java/HelloWorld.java

或者使用相对路径:

javac java/HelloWorld.java

执行完该命令后, 在/src/java/ 目录下生成一个HelloWorld.class 文件。执行文件(在java 目录下新建目录a ,在a 目录下新建目录b 将HelloWorld.class 至于b 目录下;执行java a.b.HelloWorld ),必须要按照包的结构先创建目录。

第二种编译方法( 编译直接生成包的路径)

假设当前目录为/src/java/ ,则编译命令为:

javac -d . HelloWorld.java

说明:"." 为指定编译路径为当前目录;生成的HelloWorld.class 所有目录为/src/java/a/b/HelloWorld.class 。

javac -d c/d HelloWorld.java

说明:c/d 为指定编译路径为/src/java/c/d ,同样也可以写成绝对路径如javac -d d:/ HelloWorld.java ,前提是路径必须先存在;生成的HelloWorld.class 所有目录为/src/java/c/d/a/b /HelloWorld.class 。

假设当前目录为/src/ ,则编译命令为:

javac -d . java/HelloWorld.java

说明:生成的HelloWorld.class 所有目录为/src/a/b/HelloWorld.class 。

javac -d java/c/d java/HelloWorld.java

说明:生成的HelloWorld.class 所有目录为/src/java/a/b/HelloWorld.class 。

第三种编译方法(先把源文件按照包结构放到指定的目录中,然后执行编译命令)

假设当前目录为/src/java/,先在目录中创建目录/a/b,然后编译命令:

javac a/b/HelloWorld.java

下面总结一下对于带包的类进行编译和执行时的一些要点:

1、编译时可以不考虑包结构的问题,不论用哪种方法,其实本质都是一样的,只需要让javac命令找到所需要编译的原文件(*.java)即可。编译时可以用相对或者绝对路径来为javac命令提供源文件的位置信息。

2、初学者易混淆classpath的作用,对于java命令的-cp选项和javac命令的-classpath选项,以及配置环境变量时的 CLASSPATH.其作用是不变的:都是指定所需要的class文件的位置。所不同的是,执行javac编译时的-classpath选项用于指定被编译的源文件需要调用另外的用户自定义类的位置.。执行java命令是根据classpath来寻找所需要执行的class文件的位置;而javac命令不能根据classpath来找源文件,只能根据classpath来寻找所需要用到的类。

下面举例来说明该问题:

假设以下代码(位置:/src/java/code/a/b/TestT.java):

package a.b

import c.d.T

public class TestT {

public static void main(String[] args) {

T t = new T()

t.p()

}

}

package a.b

import c.d.T

public class TestT {

public static void main(String[] args) {

T t = new T()

t.p()

}

}

引入的文件(位置:/src/java/code/tmp/c/d/T.java)

package c.d

public class T {

public void p(){

System.out.println("class:T")

}

}

package c.d

public class T {

public void p(){

System.out.println("class:T")

}

}

假设现在编译两个文件(目录:/src/java/),则编译命令为:javac -classpath code/tmp code/a/b/TestT.java 执行命令为:java -cp codecode/tmp a/b/TestT

如果当前目录为:/src/java/code/,则编译命令为:javac -classpath tmp a/b/TestT.java执行命令为:java -cp .tmp a/b/TestT

假设现在编译不同磁盘的三个文件(目录:e:/src/java/),则编译命令为:

假设以下代码(位置:e:/src/java/code/a/b/TestT.java):

view plaincopy to clipboardprint?

package a.b

import c.d.T

import e.f.T1

public class TestT {

public static void main(String[] args) {

T t = new T()

t.p()

T1 t1 = new T1()

t1.p()

}

}

package a.b

import c.d.T

import e.f.T1

public class TestT {

public static void main(String[] args) {

T t = new T()

t.p()

T1 t1 = new T1()

t1.p()

}

}

引入的文件1(位置:d:/java/code/tmp/c/d/T.java)

view plaincopy to clipboardprint?

package c.d

public class T {

public void p(){

System.out.println("class:T")

}

}

package c.d

public class T {

public void p(){

System.out.println("class:T")

}

}

引入的文件2(位置:c:/code/tmp/e/f/T1.java)

view plaincopy to clipboardprint?

package e.f

public class T1 {

public void p(){

System.out.println("class:T1")

}

}

package e.f

public class T1 {

public void p(){

System.out.println("class:T1")

}

}

如果当前目录为:e:/src/java/

编译命令为:javac -classpath d:/java/code/tmpc:/code/tmp code/a/b/TestT.java

执行命令为:java -cp coded:/java/code/tmpc:/code/tmp a/b/TestT

说明:javac命令中的classpath必须指定引入类的路径;同样java命令中的cp必须引入引入类的class的路径也需指定执行类的路径

实例:

package test

enum T{

HELLO,WORLD,HAA

}

package test

import static test.T.*

public class A {

private T t

public A(T t){

this.t = t

}

public static void main(String[] args){

System.out.println(new A(HELLO))

System.out.println(new A(HAA))

}

@Override

public String toString(){

return this.t + " "

}

}

编译命令:javac -d . T.java

javac -d . A.java

执行命令: java test.A

error[cp001]:

copy

protection

check,

no

valid

license

found

for

this

prod

t

[20]

原因:安装的时候没有把注册机的0x.....字串的小写字母改为大写字母。

warning[pe001]:

last

line

of

file

ends

without

a

newline

f:\emotion\iar\pk

升级\cc1110-8\main.c

原因:在使用iar时常常会d出类似这样一个警告,其实只要在最后一行多加一个回车就不会再有这个警告了.

error[e72]:

segment

bank_relays

must

be

defined

in

a

segment

definition

option

(-z,

-b

or

-p)

原因:这是用730b编译的错误,可能是由于相对于目标工程版本过高的,后改用720h,没有发生错误。

error[pe005]:

could

not

open

source

file

"stdio.h"

原因:头文件路径不对造成,改正的方法是在设置选项卡的c/c++

compiler

->

preprocessor选项里,将$toolkit_dir$\inc\clib\添到incl?

paths中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8131958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存