A. 龍芯軟體開發為什麼編譯是灰色的
下載Dev C++的安裝包是有問題的,這個版本和大多數人使用不一樣。
先點擊上欄的工具按鈕,選擇編譯選項然後在編譯器中的設定編譯器配置里點擊我下面指畫的黃色雙勾在接著接下來出現下面提示,點擊Yes.最後現在發現設定編譯器配置就存在選項了,回到主界面,編譯和運行的按鈕就可以使用了!
B. 龍芯電腦的軟體用什麼編譯器,能在龍芯電腦
可以。
龍芯的電腦可以安裝許多種其他版本的linux(包括安卓)甚至是bsd,只要支持mips架構的就可以。
例如Debian和FreeBSD,還有國內linux發行版deepin2014(deepin15暫時還不支持mips架構)
C. 龍芯為什麼採用了mips指令集,而沒有使用arm指令集
不僅僅是MIPS的架構完整性 與授權較寬松問題 還有一個重要因素—程序鏈
雖然如今Arm吵得火,Arm V8(64bit)更火。但是ARM V8還是一個新生的指令集組合(2011年發布,數據來自維基網路)。相對應的系統內核,編譯器,支持庫方面還不太完整(當然,跟進速度很快)還需要一段時間才能完善。
而MIPS不同,正如@破布 所說 。MIPS來自上世紀90年代的微架構大混戰時期。 MIPS是世界上最早商業化的64位架構之一(雖然現在MIPS已經沒落,被收購)。但是作為歷史積累。MIPS64不僅僅有完善的微架構設計,而且還有較為完整的軟體鏈支持。
我記得沒錯的話,龍芯2B開始支持64位(2003年,數據來自維基網路)。而那時,ARM還僅有ARM 11架構,更不用說現在的ARM V8指令集組了。
我的看法:MIPS雖然已經衰弱,但,MIPS現在同樣還可以作為高通用性微架構使用。我感覺,龍芯選擇MIPS,依然是正確的。
(以上僅代表我的個人意見)
D. 有人知道給龍芯開發桌面應用用什麼開發工具
龍芯+Linux的編譯器是mips-linux-gcc,龍芯的官網有介紹。
E. 龍芯與Linux問題
可以,但更建議你用ubuntu linux ,要容易上手些,使用也方便,不會打擊新手自信。而且ubuntu 也有龍芯版的,可以裝在龍芯上。它們本質是一樣的。
原則上只要有相應的編譯器,開源軟體都可以運行在龍芯上。
雖然CPU不同,但是世界上所有的程序,絕大部分是C/C++語言寫的,它是跨平台的語言,只要有相應的編譯器(GCC)就能編譯後運行在完全不同的CPU上。而linux 程序基本都是開源的,龍芯出現後肯定有很多人去移植和開發編譯器。所以,你的程序只要是C/C++寫的就能運行,當然,要用龍芯專用的編譯器編譯一次。
當然,Linux 腳本類程序不需編譯也可直接運行。
F. 解釋下龍芯
關於CPU和晶元,我們標準的操作系統,大約有350個C函數,這種操作系統叫標準的操作系統,IEEE
POSIX這就是標准操作系統的規范,但是事實上,美國很多軍方的CPU和工控,飛機製造和武器工業控制領域很多晶元是不支持這個標準的,比如軍隊的OpenRISC派系的晶元,只能支持大約100~150個標准C函數,當然了,剩下的200多個函數可以使用這個100多個函數來用軟體來實現,但是,這些用軟體實現的庫和函數,運行速度相當的慢。
實際上mips就是當年早期OpenRISC商業化的產物,但是Mips走的更遠,主要解決大規模並行的浮點數運算問題。mips是支持linux操作系統的,但是這個CPU只能順利的運行大約150個標準的操作系統的C函數。
現在C++標准庫STL一共又20個大類,超過了1000個函數或者模板實現,而boost庫(STL的升級版)有超過2000個復雜函數或者模板實現,這些函數如果在intel或者AMD的晶元上執行得到的結果,跟在arm上執行得到的結果很多都是不同的,尤其是執行效率問題,很多在arm上慢的要死,比java還要慢(現在安卓機主要使用java開發應用軟體,編譯器是使用J2SDK修改的編譯器)。蘋果公司在這方面有比較深入的研究。這個不細談。
如果這個C++函數在mips晶元上執行,這裡面有一多半是根本無法執行的,也就是說,會崩潰和異常退出。並且,J2SDK也是無法在mips上順利的執行的,相當的垃圾的一個晶元。
這就是為啥在美國9年代末期,mips被市場淘汰的根本原因。
G. 龍芯1b linux下 程序用什麼編譯執行
Linux下C程序的編輯,編譯和運行以及調試
要使用的工具:
編輯:vim(vi)
編譯和運行:gcc
調試:gdb
安裝很簡單(以下是以在CentOS中安裝為例):
1
yum vim gcc gdb
1.使用vim編輯源文件
首先,打開終端練下手:
1
vim hello.c
(進入一般模式)
按下"i",進入編輯模式,在編輯模式下輸入:
1
#include <stdio.h>
2
int main(){
3
printf("Hello, World!\n");
4
return 0;
5
}
輸入完成,按"ESC"鍵,回到一般模式,然後按下":wq",即可保存並退出vim。
附註:
在一般模式下,按下":%!xxd"查看hello.c的16進制形式,回到文本格式按下":%!xxd -r"。
查看hello.c的二進制形式,按下":%!xxd -b",這是hello.c保存在磁碟上的存儲狀態。
至此,在vim已完成C源文件的編輯。
關於vim的使用,直接上網搜索vim,相關的文章是相當多的;或者參考vim的聯機幫助,在命令行上鍵入"man vim"即可。
2.編譯和運行
gcc命令的基本用法:
1
gcc[options] [filenames]
其中,filenames為文件名;options為編譯選項
當不使用任何編譯選項編譯hello.c時,gcc將會自動編譯產生一個a.out的可執行文件:
1
[root@localhost c]# ls
2
hello.c
3
[root@localhost c]# gcc hello.c
4
[root@localhost c]# ls
5
a.out hello.c
執行:
1
[root@localhost c]# ./a.out
2
Hello, World!
使用-o編譯選擇,可以為編譯後的文件指定一個名字:
1
[root@localhost c]# ls
2
a.out hello.c
3
[root@localhost c]# gcc hello.c -o hello
4
[root@localhost c]# ls
5
a.out hello hello.c
執行:
1
[root@localhost c]# ./hello
2
Hello, World!
注意:使用-o選項時,-o後面必須跟一個文件名,即:-o outfile。
為了便於描述後面的選項,刪除hello和a.out可執行文件。
結合介紹gcc的編譯選項,分析hello.c的編譯和執行過程:
(1)預處理階段:使用-E選項,對輸入文件只做預處理不編譯。當使用這個選項時,預處理器的輸出被送到標准輸出而不是存儲到文件。如果想將預處理的輸出存儲到文件,可結合-o選項使用,使用如下:
1
[root@localhost c]# ls
2
hello.c
3
[root@localhost c]# gcc -E hello.c -o hello.i
4
[root@localhost c]# ls
5
hello.c hello.i
使用less查看下hello.i:
1
[root@localhost c]# less hello.i
(2)編譯階段:使用-S選項,將C程序編譯為匯編語言文件後停止編譯,gcc編譯產生匯編文件的默認後綴為.s。
1
[root@localhost c]# ls
2
hello.c hello.i
3
[root@localhost c]# gcc -S hello.c
4
[root@localhost c]# ls
5
hello.c hello.i hello.s
在gcc -S hello.c處,使用C源文件編譯,也可以用gcc -S hello.i的預處理文件編譯,結果一樣。
使用-S編譯時,也可以和-o結合使用指定編譯產生的匯編語言文件的名字:
1
[root@localhost c]# ls
2
hello.c hello.i hello.s
3
[root@localhost c]# gcc -S hello.i -o hello_s.s
4
[root@localhost c]# ls
5
hello.c hello.i hello.s hello_s.s
可使用less命令查看匯編代碼。
(3)匯編階段:使用-c選項,將C源文件或者匯編語言文件編譯成可重定向的目標文件(二進制形式),其默認後綴為.o。
1
[root@localhost c]# ls
2
hello.c hello.i hello.s hello_s.s
3
[root@localhost c]# gcc -c hello.s
4
[root@localhost c]# ls
5
hello.c hello.i hello.o hello.s hello_s.s
也可以和-o結合使用指定編譯產生的目標文件的名字:
1
[root@localhost c]# gcc -c hello.s -o hello.o
由於hello.o是二進制文件,使用less查看顯示為亂碼;
然後使用vim hello.o打開也顯示為亂碼,按下":%!xxd"查看其16進制形式,按下":%!xxd -r"退出 16進制查看模式,回到亂碼狀態。在退出vim時,若提示已經修改了文件,則使用":q!"強制退出。
(4)鏈接階段:鏈接器將可重定向的目標文件hello.o以及庫文件(如printf.o)執行並入操作,形成最終可執行的可執行目標文件。
1
[root@localhost c]# ls
2
hello.c hello.i hello.o hello.s hello_s.s
3
[root@localhost c]# gcc hello.o
4
[root@localhost c]# ls
5
a.out hello.c hello.i hello.o hello.s hello_s.s
可使用-o選項,指定輸出文件(即可執行目標文件)的名字:
1
[root@localhost c]# gcc hello.o -o hello
2
[root@localhost c]# ls
3
a.out hello hello.c hello.i hello.o hello.s hello_s.s
(5)執行階段:
1
[root@localhost c]# ./a.out
2
Hello, World!
3
[root@localhost c]# ./hello
4
Hello, World!
由此,看出前面使用的gcc hello.c -o
hello命令,將hello.c直接編譯為可執行的目標文件,中間經過於處理器的預處理階段(源文件到預處理文件),編譯器的編譯階段(預處理文件到匯
編文件),匯編器的匯編階段(匯編文件到可重定向的目標文件),鏈接器的鏈接階段(可重定向的目標文件到可執行的目標文件)。
還有其他的選項如下:
-Idir:dir是頭文件所在的目錄
-Ldir:dir是庫文件所在的目錄
-Wall:列印所有的警告信息
-Wl,options:options是傳遞給鏈接器的選項
編譯優化選項:-O和-O2
-O選項告訴GCC 對源代碼進行基本優化。這些優化在大多數情況下都會使程序執行的更快。-O2選項告訴GCC產生盡可能小和盡可能快的代碼。
-O2選項將使編譯的速度比使用-O時慢。但通常產生的代碼執行速度會更快。
除了-O和-O2優化選項外,還有一些低級選項用於產生更快的代碼。這些選項非常的特殊,而且最好只有當你完全理解這些選項將會對編譯後的代碼產生什麼樣的效果時再去使用。這些選項的詳細描述,請參考GCC的聯機幫助,在命令行上鍵入"man gcc"即可。
調試選項:-g(使用詳情見第3部分)
-g選項告訴GCC產生能被GNU調試器使用的調試信息以便調試你的程序。
即:在生成的目標文件中添加調試信息,所謂調試信息就是源代碼和指令之間的對應關系,在gdb調試和objmp反匯編時要用到這些信息。
3.調試
雖然GCC提供了調試選項,但是本身不能用於調試。Linux 提供了一個名為gdb的GNU調試程序。gdb是一個用來調試C和C++程序的調試器。它使你能在程序運行時觀察程序的內部結構和內存的使用情況。以下是gdb所提供的一些功能:
a.它使你能監視你程序中變數的值;
b.它使你能設置斷點以使程序在指定的代碼行上停止執行;
c.它使你能一行行的執行你的代碼。
(1)啟動gdb
在命令行上鍵入"gdb"並按回車鍵就可以運行gdb了,如下:
1
[root@localhost c]# gdb
2
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
3
Copyright (C) 2010 Free Software Foundation, Inc.
4
License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.
5
There is NO WARRANTY, to the extent permitted by law. Type "show ing"
6
and "show warranty" for details.
7
This GDB was configured as "x86_64-redhat-linux-gnu".
8
For bug reporting instructions, please see:<>.
9
(gdb)
當啟動gdb之後,即可在命令行上輸入命令進行相關的調試操作。
也可以以下面的方式來啟動gdb:
1
[root@localhost c]# gdb hello
這種方式啟動gdb,直接將指定調試的程序文件裝載到調試環境中。也就是讓gdb裝入名稱為filename的可執行文件,從而准備調試。
為
了能夠進行調試,當前調試的程序文件中必須包含調試信息。其中調試信息包含程序中的每個變數的類型和其在可執行文件里的地址映射以及源代碼的行號,gdb
利用這些信息使源代碼和機器碼相關聯。因此在使用gcc編譯源程序的時候必須使用-g選項,以便將調試信息包含在可執行文件中。
例如:
1
[root@localhost c]# gcc -g hello.c -o hello
gdb還提供了其他的啟動選項,請參考gdb的聯機幫助。在命令行上鍵入"man gdb"並回車即可。
(2)gdb基本命令
<1>單步執行和跟蹤函數調用
程序編輯如下:
01
#include <stdio.h>
02
int add_range(int low, int high){
03
int i;
04
int sum;
05
for(i = low; i <= high; i++){
06
sum = sum + i;
07
}
08
return sum;
09
}
10
11
int main(){
12
int result[100];
13
result[0] = add_range(1, 10);
14
result[1] = add_range(1, 100);
15
printf("result[0] = %d\nresult[1] = %d\n", result[0], result[1]);
16
return 0;
17
18
}
編譯和運行如下:
1
[root@localhost gdb_demo]# vim test1.c
2
[root@localhost gdb_demo]# gcc test1.c -o test1
3
[root@localhost gdb_demo]# ls
4
test1 test1.c
5
[root@localhost gdb_demo]# ./test1
6
result[0] = 55
7
result[1] = 5105
H. 有人在龍芯小本上編譯安裝過nodejs沒有
之所以出現這種情況,是因為默認編譯的指令集是MIPS1,但程序中使用了一些MIPS2的指令。
MIPS1的擴展支持一些MIPS2的指令。
解決辦法是在指令"ll"和"sc"前添加: .set mips2
I. 龍芯電腦的軟體用什麼編譯器,能在龍芯電腦上編譯嗎可視化怎麼實現還有IP是自己的還是直接MIPS的
MISP版本的linux上有那些編譯器,龍芯就能用那些編譯器,目前gun一系列,python,php等等都能用。
龍芯是自己設計的,指令集兼容mips,並自己擴充了一些。
J. 有在龍芯電腦上升級或重新編譯Linux內核成功的嗎
龍芯本質上是屬於MIPS晶元,但是又在指令集上進行了修改和擴展,所以和真正的MIPS晶元又有些不同,要用合適的編譯工具,在龍芯電腦上編譯Linux內核超麻煩的,還是盡量使用原來適合的那個版本的內核吧,這樣相對小眾的平台出現問題了參考資料都難找呢。