⑴ 請問運行於不同CPU構架的linux,它們的軟體可以通用嗎
以上回答中jiangtao9999的比較靠譜兒。
是這樣:
1、Linux下的軟體幾乎都是c語言的;
2、如果你學過C語言,找找書應該有這樣一個概念:ANSI C,這個是一個C語言的標准,比如printf這個函數就屬於標准庫(也就是符合ANSI標準的)函數
3、假如你編寫了一個軟體,代碼中僅僅包含ANSI的庫函數,那麼沒有問題,只要是支持C語言的平台,都能正常運行,即:編寫了一個簡簡單單的helloworld到哪裡編譯運行都沒有問題。
【前提是:】編譯再運行,不編譯就運行是不可以的,比如printf函數在各種架構上的實現方式是不可能相同的,所以需要在arm的編譯器上再編譯一遍才可以。否則運行不了。
有的軟體平台可以不用編譯,直接運行,比如jiangtao9999說的java、Python什麼的,Java可以實現「一次編譯,滿哪運行」什麼的,而Python則是有了.py源代碼就可以無敵了,使用的時候不用你去執行編譯命令,直接執行即可。arm上實現這兩種語言都是很容易的——下載源代碼、編譯、安裝即可。
4、不同架構的Linux平台都要實現一個編譯器,這是很重要的,有了編譯器,才可以從源代碼安裝軟體。
5、使用非ANSI庫中的函數需要該Linux包含這個函數的實現,否則,編譯後的連接將不通過,比如一個軟體使用了GTK來實現圖形用戶界面,那麼就需要系統中包含了gtk的庫函數,這就叫依賴,安裝軟體,首先要解決依賴,依賴有時候解決起來很麻煩,所以軟體開發過程中盡量減少依賴,這樣方便安裝。
6、tar.gz這種格式的軟體包有可能是源代碼,有可能是可執行文件(這是因為那隻是一個壓縮包,內容是什麼不一定),這兩者不同。很多軟體以tar.gz格式發布源代碼,而qq的Linux版本屬於可執行文件,在幾乎所有Linux平台下面直接雙擊或者通過命令就可以使用。
7、如果你使用的是rpm包或者deb包或者是tar.gz文件包中可執行文件形式的軟體包,而不是tar.gz這種形式的源代碼,你需要使用相應的軟體包管理器安裝就行,
但這不意味著arm版本的deb和x86版本的deb文件是通用的,你能這樣用是因為所有的使用x86機器的軟體經過編譯或者交叉編譯(在arm平台上編譯x86平台上的軟體就叫交叉編譯)以後,運行於幾乎完全一樣的統一的平台上,實現軟體和系統的無縫對接,方便了用戶——一方面可以不用浪費編譯的時間,主要還是方便了那些不會編譯軟體的人。
8、我也正在學習Linux,所以很多地方不太對,這只是我現在的一些理解。jiangtao9999說的主要是和匯編有關,如果代碼的實現主要是在c語言水平,那麼就會由編譯器屏蔽掉指令集和寄存器什麼的。
9、要是在網路回答的答案能改改就好了,這樣錯誤就會少一點。
10、重新羅嗦一遍:
1在不重新編譯源代碼的情況下,x86下linux的軟體不可以運行於arm構架的Linux,即使運行也會奇卡。
2和在編譯是否時為X86的CPU構架優化了編譯無關。(把我問迷糊了,估計是無關)
3軟體在編譯時是否為X86的CPU構架而優化主要看作者了,資料可以參看http://www.gentoo.org/doc/zh_cn/gcc-optimization.xml
4和不同的安裝包格式有一定關系
5tar.gz格式的軟體包不能保證在不同架構的Linux都能運行
6在arm的linux安裝時解決依賴以後,乳溝編譯通過基本是沒什麼問題的
7不是所有源代碼在arm和x86下編譯一下就可以了,還需要做一些努力
8有源代碼可以對遇到的不通過的問題逐一解決,理論上可以實現所有軟體都能運行
9重新編譯過程中如果遇到依賴問題需要逐一解決
⑵ red hat linux 裡面怎麼安裝在gcc官網下載的gcc
樓主,你先說明你下載的gcc後綴名,如果是.rpm,那麼你運行命令rpm -ivh gcc-4.1.2-50.el5.i386.rpm
就ok了。如果是.gz或者.tar那麼你就先解壓(解壓命令參考http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html),然後安裝,安裝基本還是用rpm -ivh gcc-4.1.2-50.el5.i386.rpm。 其實樓主你的linux系統如果可以聯網的話,直接打
yum -y install gcc這個命令就可以自動安裝了,方便實用。
⑶ 如何搭建交叉編譯環境
交叉編譯環境就是在Windows下的東西拿到Linux下編譯運行吧,我個人是在Linux啟動了samba伺服器,然後將文件夾映射到Windows下,在Windows下使用vc 6.0編程序然後到Linux下編譯的。不知道能不能對你有些幫助。
下載的rpm包,可以使用rpm -ivh 包路徑進行安裝
⑷ 如何構建交叉編譯環境。
你說的是我下面的回答嗎?下面就一些問題作一個說明,以期拋磚引玉。
基於Linux操作系統的應用開發環境一般是由目標系統硬體(開發板)和宿主PC機所構成。目標硬體開發板用於運行操作系統和系統應用軟體,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,並口或乙太網介面建立連接關系。
但在此我建議構建如下的交叉編譯環境,適合個人或研發小組使用:單獨拿出一台PC機(PII以上即可,就用以前淘汰的舊機器就可以),在該PC上安裝桌面的Linux操作系統(如Red Hat Linux 8.0及以上),可以採用默認的安裝選項(注意要包含FTP服務),這台PC作為Linux伺服器,除管理員以外,一般不直接讓其他人去操作。
將該Linux伺服器接入區域網,並新建一些合法用戶,以便其他的PC機(在此我們將其稱為工作站)的合法用戶能訪問到Linux伺服器。而其他的PC機(工作站)仍然使用Windows操作系統,原來幹啥繼續幹啥。
需要的軟體工具包括:
1、FTP客戶端程序(如Cuteftp,可到網上下載)。
2、Telnet工具(如SecureCRT,可到網上下載)。
3、移植到某一特定ARM平台的Linux操作系統內核源碼(一般由銷售商整理提供)。
4、GNU編譯工具,可由相關網站下載,或由銷售商整理提供。
在工作站安裝:
在某工作站PC上安裝FTP客戶端程序和Telnet工具,安裝完畢後應該可以在該工作站PC和Linux伺服器之間進行文件的傳輸,並在工作站PC可以通過Telnet登陸到Linux伺服器(可能需要將Linux伺服器的防火牆服務關閉才能完成)。
在Linux伺服器安裝:
將工作站PC上的Linux操作系統內核源碼壓縮包和GNU編譯工具通過FTP傳送到Linux伺服器的某個目錄(如合法的用戶目錄),然後在該目錄下解壓,並將GNU編譯工具安裝到默認的工作目錄即可,以上工作通過在工作站PC使用Telnet工具完成,而不需要在Linux伺服器上進行。
Linux操作系統內核的編譯:
Linux操作系統內核的編譯一般有一個比較固定的步驟,會根據MakeFile文件的不同而略有差異,可參考相關文檔,編譯的工作在工作站PC使用Telnet工具完成。
⑸ 用交叉編譯器(已經更改為arm-linux-gcc) 編譯內核;但是提示gcc沒有找到
提示 gcc:not command;就表示是gcc命令沒找到,這個和你的arm-linux-gcc沒關系,因為如果arm-linux-gcc找不到的話,會提示arm-linux-gcc找不到的,所以你就只能猜是不是host邊的gcc沒找到,然後在你的主機端安裝gcc開發包就可以了。
嵌入式一種重要的能力就是debug,自己鍛煉下吧,以後這種簡單的問題就能搞定了。
⑹ 關於rpm依賴性的問題!
搭建一個yum源伺服器,yum會自動解決包依賴性問題
⑺ 執行./configure時出現錯誤 configure: error: C compiler cannot create executables
執行configure的時候指定目標機器以及ABI就行了,如下:
./configure --host=powerpc-linux-gnu ABI=32就是交叉編譯ppc下32位可執行程序的configure參數
⑻ 求助,開始安裝系統時gcc是能用的,後來裝了交叉編譯的arm-unknown-linux-gcc,就出問題了
考慮可能是gcc 出問題了,結果使用man gcc
查看是不是有此命令。出人意料的是沒發現gcc 命令。不知出了什麼問題,感覺不應該出這樣的問題呀,這不是系統自帶的嗎?再三找原因,到論壇上發個帖子問了問老師,才發現fc6安裝的時候必須定製這些安裝包,不能按默認安裝否則會少裝好多文件。
於是想個解救的方法吧,到網上查了好多資料,也下了好幾個安裝包,不過按網上的說明一步一步安裝,到最後都會出錯。
具體步驟如下:安裝之前,必須保證系統中有cc或者gcc等編譯器,並且是可用的,或者用環境變數CC指定系統上的編譯器。如果系統上沒有編譯器,不能安裝源代碼形式的GCC 3.3.1情況,可以在網上找一個與你系統相適應的如RPM等二進制形式的GCC軟體包來安裝使用。本文介紹的是以源代碼形式提供的GCC軟體包的安裝過程,軟體包本身和其安裝過程同樣適用於其它Linux和Unix系統。
系統上原來的GCC編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統中的不同目錄下的。與此不同,現在GCC建議我們將一個版本的GCC安裝在一個單獨的目錄下。這樣做的好處是將來不需要它的時候可以方便地刪除整個目錄即可(因為GCC沒有uninstall功能);缺點是在安裝完成後要做一些設置工作才能使編譯器工作正常。在本文中我採用這個方案安裝GCC 3.3.1在安裝完成後,仍然能夠使用原來低版本的GCC編譯器,即一個系統上可以同時存在並使用多個版本的GCC編譯器。
⑼ alpine linux怎麼安裝文件
apk --update add ×××(×××是軟體名字)
eg:
apk --update add openssl
apk --update add openssl-dev
執行命令後,會從數據源中尋找最新版本來安裝對應軟體包。
這是兩個apk的數據源(阿里和清華,還有一個數據源我忘記了一般我就用這兩個),交叉編譯的安裝包,alpine最快也是最小空間安裝。
echo "http://mirrors.aliyun.com/alpine/edge/main/" > /etc/apk/repositories
echo "https://mirror.tuna.tsinghua.e.cn/alpine/edge/main/" > /etc/apk/repositories
⑽ C++交叉編譯 請幫忙見見是哪個庫沒有鏈接
Eclipse 一般用作Java開發,但也可以用作C/C++開發工具。那麼,在 Linux 系統下,怎樣安裝 eclipse 用來編譯 C/C++ 程序呢?
工具/原料
Eclipse IDE for c/c++ 安裝包
一、下載 Eclipse IDE for c/c++ 安裝包
1
啟動 Linux 系統,使用瀏覽器從 eclipse 官網下載 Eclipse IDE for c/c++ 安裝包。地址見圖。
2
下載時,請根據你的系統版本下載相應的安裝包。由於我是 CentOS 6.6 32位版本,自然是下載 Linux 32 位的。
3
在這兒說明一下,使用此安裝包,可以免去安裝 eclipse 後還需配置 CDT 的煩惱。作為一個 c/c++ 程序開發者,深感比以前方便了不少。
END
二、安裝 Eclipse IDE for c/c++
1
下載完成後,進入 Eclipse 安裝包所在目錄,在空白處右擊滑鼠,啟動終端。
2
安裝 Eclipse 之前,請確保安裝了以下組件並更新到最新版:
1、Java 環境
2、gcc 和 g++
下面簡單介紹一下檢測方法:
1、查詢 java 版本(通用):java -version
2、查詢 gcc 版本(紅帽系列):rpm -qa gcc
3
下面進入 eclipse 的安裝環節,非常簡單。總體來說是解壓後即可用。
首先,登陸 root 帳戶,鍵入命令 tar -zxvf 安裝包名,回車,將壓縮包解壓到當前目錄下。
4
解壓完成後,鍵入 ls ,可以看到當前目錄多了一個目錄 eclipse 。
鍵入 cp -r eclipse /opt/ ,將 eclipse 目錄下的所有文件復制到 /opt 目錄下(這個目錄隨你喜好了,不復制也行)。
END
三、使用 eclipse
1
如果像我上面那樣將 eclipse 文件夾復制到了 opt 目錄,在終端鍵入 /opt/eclispe/eclipse,回車。eclipse 就啟動了。
2
註:為了便於英語不好的同學理解,我下面全用中文,實際菜單為英文。
1)新建工程
首次啟動時,會提示你程序代碼保存位置,然後可能還會出現歡迎界面(關閉掉歡迎界面,IDE界面就可以看到了)。點擊「文件」-「新建」-「c++工程」。
3
為工程取一個名字(例如 test),選擇「空工程」,其餘選項保持默認(下同),點擊「下一步」。
4
在接下來的頁面中,繼續點擊「下一步」,最後點擊「完成」。
5
2)添加代碼文件
點擊「文件」-「新建」-「源文件」。
6
填寫源文件名,切記,一定要加擴展名。
7
下面,就可以在源文件中書寫代碼。書寫代碼時,系統有時會給出一些錯誤提示,如果你確認你的代碼沒有寫錯,不要去理會。
8
代碼寫完後,點擊工具欄的小三角按鈕即可對代碼編譯運行,如果彈出提示框問你「代碼已經修改,是否保存」,點擊「是」。
9
運行的結果輸出在下邊的框里。
END
注意事項
安裝 eclipse 前,要確保必須的組件已經安裝。
添加程序代碼文件時,一定要加上擴展名。