Unix AIX和Linux C語言編譯器差別?

2020-10-07 編程小火車


在這之前,先給大家簡單介紹一下AIX

AIX(Advanced Interactive eXecutive)是IBM基於AT&T Unix System V開發的一套類UNIX作業系統,運行在IBM專有的Power系列晶片設計的小型機硬體系統之上。它符合Open group的UNIX 98行業標準(The Open Group UNIX 98 Base Brand),通過全面集成對32-位和64-位應用的並行運行支持,為這些應用提供了全面的可擴展性。AIX的一些流行特性例如chuser、mkuser、rmuser命令以及相似的東西允許如同管理文件一樣來進行用戶管理。AIX級別的邏輯卷管理正逐漸被添加進各種自由的UNIX風格作業系統中。

————百度百科


xlc++ 和 g++

AIX上使用的是xlc++編譯器,Linux上使用的是g++編譯器。

對C標準中沒有嚴格定義的行為,兩個編譯器的處理方式不一定相同,代碼在兩個平臺運行會有不一樣的表現。導致在一個平臺運行正常,另一個平臺可能就是bug了。

問題集中在以下幾個方面:


32位系統 和 64位系統

如果兩個平臺一個是32位版本另一個是64位版本,有些變量的長度會發生變化。需要注意的地方如下表格:


文章就分享到這裡,希望對大家有幫助!

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!

編程學習軟體分享:

編程學習視頻分享:

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

C語言C++編程學習交流圈子,點擊下方【了解更多】獲取相關學習資料~

相關焦點

  • C語言之父和Linux之父誰更偉大?
    不知道你有沒有想過,大家都用C語言或基於C語言的語言來寫編譯器,那麼世界上第一個C語言編譯器又是怎麼編寫的呢?這不是一個「雞和蛋」的問題…… 回顧一下C語言歷史:Tomphson在BCPL的基礎上開發了B語言,Ritchie又在B語言的基礎上成功開發出了現在的C語言。在C語言被用作系統程式語言之前,Tomphson也用過B語言編寫過作業系統。
  • 在計算機軟體領域 C語言之父和Linux之父誰更偉大
    足可見unix對現在作業系統的影響,其地位就像《易經》,為群經之首。 4)  第一個C語言編譯器是怎樣編寫的? 不知道你有沒有想過,大家都用C語言或基於C語言的語言來寫編譯器,那麼世界上第一個C語言編譯器又是怎麼編寫的呢?
  • 如果你想學C語言,下載哪個編譯器好?
    C語言這個東西現在用的人很少,一般都是用java的多,不過對於我來講,我一看C語言就親切,就想寫,工作上不一定能用得到,但是C語言作為作為所有高級語言的爸爸,多學一點有助於理解一些底層的東西,下面我就跟大家說一下想學C語言下載哪個編譯器好。
  • 盤點Linux作業系統下C語言編程注意事項
    linux作業系統文章專題:linux作業系統詳解(linux不再難懂)  2、學會makefile文件的編寫規則,並結合使用工具aclocal、autoconf和automake生成makefile文件。  3、掌握gcc和gdb的基本用法。
  • 了解Linux安裝ARM交叉編譯器的步驟
    gcc是linux環境下的asm和c語言編譯器,生成的是可以在x86平臺上運行的可執行程序; 而在開發板上運行的程序則需要arm平臺專用的編譯器,也稱為交叉編譯器; 交叉編譯器可以由開發人員手工定製可以看到一個子目錄toolschain/,該目錄下存放了用於arm平臺的交叉編譯器和其他工具。
  • Linux下C編程基礎之:Linux下C語言編程概述
    由於它的硬體無關性和可移植性,使C語言逐漸成為世界上使用最廣泛的計算機語言。本文引用地址:http://www.eepw.com.cn/article/257154.htm為了進一步規範C語言的硬體無關性,1987年,美國國家標準協會(ANSI)根據C語言問世以來各種版本對C語言的發展和擴充,制定了新的標準,稱為ANSIC。
  • C語言的歷史,個人談談c語言
    作為一門計算機語言,c語言是一門面向過程,非常抽象的一個程序設計語言,他是在底層開發,並不適用於高層開發,能夠直接以簡單的方式編譯存儲器。作為一門高級語言,不需要任何運行環境。20世紀80年代,美國國家標準局為了避免各國產生的差異,於是給c語言制定了一套完整的國際標準語言
  • Linux下C/C++編譯器gcc使用簡介
    1.gcc包含的c/c++編譯器本文引用地址:http://www.eepw.com.cn/article/257973.htmgcc,cc與c++,g++gcc和cc是一樣的,c++和g++是一樣的。一般c程序就用gcc編譯,c++程序就用g++編譯。
  • c編譯器so easy,gcc c編譯器生成、使用動靜態庫
    第一章程序開發人員大多接觸過c編譯器,請注意,不要將c編譯器和編輯器弄混淆哦。本文對c編譯器的講解,同樣基於gcc c編譯器,本文主要目的在於對linux環境下gcc c編譯器生成和使用靜態庫和動態庫予以介紹。此外,本文為系列教程第一篇——基本概念篇,之後將帶來另外兩篇。
  • 網際網路發展史人物篇:Brian Kernighan——Unix和C語言背後的巨人
    上一篇文章我們講到C語言的發明人丹尼斯·裡奇(Dennis Ritchie),他於1972年左右發明了C語言,C語言裡的時間/日期計算起點,有個unix timestamp(unix 時間戳)是 Jan 1, 1970 UTC。即 1970年1月1日,是UNIX元年。 C原因發明至今接近50年了,達到了知天命的年齡了。
  • 帶你閱讀linux內核源碼:通俗講解編譯器、交叉編譯器和大小端
    歡迎關注」技術簡說「,持續分享linux內核和驅動開發乾貨。arm板子上直接運行c程序,可能需要這個。arm-uclinux-gcc:針對arm的uclinux的交叉編譯器arm-linux-gcc : 針對arm的linux的交叉編譯器arm-linux-gnueabi-gcc:針對arm的linux的交叉編譯器,此編譯器使用gnu glibc的庫arm-linux-gnueabihf-gcc:針對arm的linux的交叉編譯器,此編譯器使用硬體浮點處理浮運算
  • Linux下C語言編程基礎知識
    這篇文章介紹在LINUX下進行C語言編程所需要的基礎知識。C語言源程序,我們要使用GNU的gcc編譯器。.o:mytool1.c mytool1.h gcc -c mytool1.c mytool2.o:mytool2.c mytool2.h gcc -c mytool2.c 有了這個Makefile文件,不過我們什麼時候修改了源程序當中的什麼文件,我們只要執行make命令,我們的編譯器都只會去編譯和我們修改的文件有關的文件,其它的文件她連理都不想去理的。
  • linux系統中通過dos2unix命令轉換windows系統中編輯的文件
    使用過linux系統的朋友都知道,linux和windows換行符是不同的,Windows格式文件的換行符為\r\n ,而Unix&Linux文件的換行符為\n. dos2unix命令就是將dos文件轉換為unix、linux格式 ,其實就是dos2unix命令將文件中的\
  • 什麼是C語言的編譯器?從計算機原理的角度談編譯器
    相對機器語言和彙編語言,C語言已經算是高級語言了。相信你們已經知道什麼是機器語言和彙編語言,如果有不知道的朋友可以關注參考編者的另外一篇文章:C語言基礎:二進位和計算機語言雜談(編程新手福利),當然也可以自行百度。
  • 世界上第一個C語言編譯器是怎麼編寫的?它為什麼能夠用C語言編寫?
    所謂C語言編譯器,就是把編程得到的文件,比如.c,.h的文件,進行讀取,並對內容進行分析,按照C語言的規則,將其轉換成cpu可以執行的二進位文件。這些操作,C語言都是可以實現的。 所以用C語言來做C語言的編譯器是完全可行的。 但是,歷史上的第一個C語言編譯器,肯定不是C語言寫的,因為在沒有編譯器時,無法把C語言轉換成可執行文件。只要有了第一版其它語言的編譯器,就可以用C語言寫編譯器了。
  • HelloWorld背後的故事:在Linux上編譯C語言程序
    C語言的經典程序「Hello World」並不難寫,很多朋友都可以閉著眼將它寫出來。那麼編譯一個「Hello World」到底經歷了怎樣的過程呢?c0 60 04 40 00 mov    $0x400460,%r8 4003d6: 48 c7 c1 f0 03 40 00 mov    $0x4003f0,%rcx 4003dd: 48 c7 c7 a0 03 40 00 mov    $0x4003a0,%rdi 4003e4: e8 97 ff ff ff  
  • 淺析gcc、arm-linux-gcc和arm-elf-gcc的關係
    The GNU Compiler Collection,通常簡稱 GCC,是一套由 GNU 開發的編譯器集,為什麼是編輯器集而不是編譯器呢?那是因為它不僅支持 C 語言編譯,還支持 C++, Ada,Objective C 等許多語言。
  • 我眼中的C語言及其起源
    所以早期的C語言編譯器就採取了一個取巧的辦法:先用彙編語言編寫一個C語言的一個子集的編譯器,再通過這個子集去遞推,進而完成完整的C語言編譯器。依靠C0已有的功能,設計比C0複雜,但仍然不完整的C語言的又一個子集C1語言,其中C0屬於C1,C1屬於C,用C0開發出C1語言的編譯器。在C1的基礎上設計C語言的又一個子集C2語言,C2語言比C1複雜,但是仍然不是完整的C語言,開發出C2語言的編譯器 …… 如此直到CN,CN已經足夠強大了,這時候就足夠開發出完整的C語言編譯器的實現了。
  • C 語言發展史的點點滴滴
    到了這個時間節點,基本可以肯定的是C語言、Unix的大部分核心都已經完善。剩下要做的就是,可移植性、標準化。後面的故事,大家可能也聽說過:後來學術和政府組織中都在使用Unix,也正是由於Unix的風靡與興盛,帶動了C語言被廣泛的傳播、使用。在1980年代,C語言的使用廣泛傳播,並且幾乎所有機器體系結構和作業系統都可以使用編譯器。
  • C/C++學習日記:C語言編譯器gcc命令如何操作步驟
    Linux 系統中最重要的軟體開發工具是 gcc,在 Linux 系統中,c89、cc 和 gcc 這些命令基本上都指向系統的C語言編譯器,通常是GNU C編譯器,或都簡稱 gcc。在 UNIX 系統中,C 語言編譯器稱為 cc。實際上,gcc 能夠編譯三種語言:C、C++ 和 Object C(C 語言的一種面向對象擴展)。利用 gcc 命令可同時編譯並連接 C 和 C++ 源程序,一般來說,C 編譯器通過源文件的後綴名來判斷是 C 程序還是 C++ 程序。