導航:首頁 > 源碼編譯 > iar編譯是什麼

iar編譯是什麼

發布時間:2022-08-29 15:48:43

㈠ IAR如何編譯生成文件

項目中有些功能需要用匯編編寫,所以想讓編譯器生成一個匯編框架,但是現在只能生成.r43和.lst文件,如何能生成.s43文件。
我的方法是這樣,寫一個同名的函數,在Project中選擇Option命令,在List頁中全選擇,但現在生不成s43文件

㈡ iar是什麼干什麼的

摘要 iar是公司名稱。

㈢ IAR編譯錯誤,請高手給看看是怎麼回事

這是說明你的代碼量超出了你預設的rom大小,一般iar編譯程序後會根據一個
xxx.xcl文件把你的代碼和數據鏈接到指定地址,iar的文件夾裡面搜搜就能搜到,"-z(code)code=romstart-romend"是說你所有的代碼都放置在以romstart為起始地址,romend為終止地址的一段連續的空間內,romstart為0x4000016c,romend為40003fff,貌似是個有16k
flash的arm。上面報錯是因為你編譯出來的code
size
是0x58b4,已經超過了這個空間,你能做的就是看看能不能縮減代碼量。

㈣ 用IAR嵌入式編譯程序,「section=」是什麼意思

#pragma section( "section-name" [, attributes] ) 作用是由程序指定創建一個段
一般默認段都是由編譯器自動指定的 不過看你這樣的寫法 IAR的時候是沒有默認段的 必須由編寫者手動指定
比如#pragma section = ".data"就是創建一個名字為.data的段,
然後下面調用
data_ram = __section_begin(".data");
來獲取這個段的首地址以備其操作
其他類似
關於pragma section的詳細說明如下。 對於#pragma 預處理還有很多功能 感興趣可以自行搜索
==================================================================================
#pragma section。創建一個段。
其格式為:#pragma section( "section-name" [, attributes] )
section-name是必選項,用於指定段的名字。該名字不能與標准段的名字想沖突。可用/SECTION查看標准段的名稱列表。
attributes是可選項,用於指定段的屬性。可用屬性如下,多個屬性間用逗號(,)隔開:
read:可讀取的
write:可寫的
execute:可執行的
shared:對於載入該段的鏡像的所有進程是共享的
nopage:不可分頁的,主要用於Win32的設備驅動程序中
nocache:不可緩存的,主要用於Win32的設備驅動程序中
discard:可廢棄的,主要用於Win32的設備驅動程序中
remove:非內存常駐的,僅用於虛擬設備驅動(VxD)中
如果未指定屬性,默認屬性為read和write。
在創建了段之後,還要使用__declspec(allocate)將代碼或數據放入段中。
例如:
//pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}
該例中, 創建了段"mysec",設置了read,write屬性。但是j沒有放入到該段中,而是放入了默認的數據段中,因為它沒有使用__declspec(allocate)進
行聲明;而i放入了該段中,因為使用__declspec(allocate)進行了聲明。

㈤ IAR編譯中的.s文件是怎麼生成的,有什麼用startup文件是在整個程序中,起什麼作用

gcc -S可以生成.s文件,.s是匯編文件
startup是系統初始化

㈥ 用iar新建工程編譯選項設置

error[cp001]:

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時常常會彈出類似這樣一個警告,其實只要在最後一行多加一個回車就不會再有這個警告了.
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中。

㈦ iar編譯問題求助!

從截圖看是編譯器編譯此行錯誤,但具體的錯誤並看不出來,是找不到此文件嗎?還要提供更詳細的錯誤提示信息。

㈧ DOS下面 如何用IAR編譯程序

第一種編譯方法( 編譯直接生成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 code;code/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 plain 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 plain 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 plain 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/tmp;c:/code/tmp code/a/b/TestT.java
執行命令為:java -cp code;d:/java/code/tmp;c:/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

㈨ IAR裡面 compile與make的區別有誰知道嗎

compile是編譯文件,make包含了編譯鏈接等工作,個人理解望採納

㈩ iar是什麼干什麼

iar是公司名稱。

IAR 公司總部在北歐的瑞典,在美國、日本、英國、德國、比利時、巴西和中國設有分公司。它最著名的產品是C編譯器-IAR Embedded Workbench, 支持眾多知名半導體公司的微處理器。

相關信息:

IAR更適合高機動性的現代戰爭,相比之下M249這個大傢伙卻很容易暴露目標。交火的時候誰抱著M249就先殺誰已經成了戰場生存法則。

而IAR長的很像M4,到時候就難以區分。提高存活率,更高效的打擊敵軍火力,提供更穩妥的班級火力支援。IAR,無限可能。

閱讀全文

與iar編譯是什麼相關的資料

熱點內容
解除電腦加密文件夾 瀏覽:358
androidcheckbox組 瀏覽:546
linux在線安裝軟體 瀏覽:823
如何設置手機安卓版 瀏覽:285
簡歷pdfword 瀏覽:123
鋒雲視頻伺服器網關設置 瀏覽:162
linux伺服器如何查看網卡型號 瀏覽:142
加密相冊誤刪了怎麼恢復 瀏覽:380
安卓代練通怎麼下載 瀏覽:518
知道域名如何查詢伺服器 瀏覽:906
方舟手游怎麼才能進伺服器 瀏覽:289
抖音演算法自動爆音 瀏覽:24
linux修改網卡配置 瀏覽:913
雲伺服器和本地伺服器數據 瀏覽:843
在家如何創業python 瀏覽:225
編譯原理好課 瀏覽:716
python中實數的表示 瀏覽:371
php下載中文名文件 瀏覽:351
哪裡有專門注冊app實名的 瀏覽:273
魔爪mx穩定器app去哪裡下載 瀏覽:469