當前位置:首頁 » 編程軟體 » aixxlc編譯

aixxlc編譯

發布時間: 2022-12-06 21:10:56

① AIX下xlc編譯C程序報警,Duplicate symbol,求助

plicate symbol是一種常見的鏈接錯誤,不像編譯錯誤那樣可以直接定位到問題的所在。但是經過一段時間的總結,發現這種錯誤總是有一些規律可以找的。
例如,我們有如下的最簡單的兩個類代碼:

// ClassA.h
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
@end

// ClassA.m
#import "ClassA.h"
@implementation ClassA
@end

// ClassB.h
#import <Foundation/Foundation.h>
@interface ClassB : NSObject
@end

// ClassB.m
#import "ClassB.h」

@implementation ClassB
@end

編譯後出現的錯誤信息如下:

plicate symbol _OBJC_METACLASS_$_ClassA in:
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassA.o
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassB.o
plicate symbol _OBJC_CLASS_$_ClassA in: /Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassA.o
/Users/dajie/Library/Developer/Xcode/DerivedData/linkTest-cpjaaatiyqpvxcbzfzpklcbqrgqg/Build/Intermediates/linkTest.build/Debug-iphonesimulator/linkTest.build/Objects-normal/i386/ClassB.old: 2
plicate symbols for architecture i386clang:
error: linker command failed with exit code 1 (use -v to see invocation)

從上面出現問題的地方,我們應該能推測出是ClassA這個類出了問題。如果這個類是我們自己寫的,就容易辦一些。
可以考慮以下原因:
1.引入頭文件時,由於疏忽,誤引入.m文件。這種一般仔細檢查一下出現問題的類的源文件就能發現。
例:ClassB.m 文件修改成下面這樣

#import "ClassB.h>"
#import "ClassA.m」 // 這句話有問題
@implementation ClassB
@end

2.同一個類,實現兩次,即有兩個@implementation 。這種一般會有一個警告,也比較容易發現。
例:ClassB.m文件修改成下面這樣:

// ClassB.m
#import "ClassB.h」
@implementation ClassB
@end
@implementation ClassA
@end

3.工程文件,同一個類文件被引入了兩次,引起這種錯誤的原因大概有兩種:一是多人協作開發時,導致project文件合並沖突;二是同名文件不在同一目錄下,添加到工程時造成重復添加。 這種一般在文件視圖,用名字過濾器檢查一下就發現了。
4. Targets的Build Phase設置項里,查看Complie Sources這一項,看看出現問題的類是不是有重復的,用文件名過濾也比較容易發現。這種問題一般也是多人協作開發時,project文件沖突導致的。發現這種問題,只要刪除就可以了。不過在我解決問題過程中,刪除其中一個文件時,重復文件會自動全部刪除,所以還需要單獨添加一下。
5.如果我們的工程中引用了第三方的庫,而恰好第三方的庫裡面有一個ClassA,也會出現這種問題。如果不能修改第三方的庫代碼,只能修改我信自己的代碼了。

② 如何在aix設置xlc編譯器path環境變數

設置ORACLE_HOME環境變數,一般是sqlplus所在位置的上一級再上一級目錄, 然後設置PATH,加入$ORACLE_HOME/bin 給你一個示例 export ORACLE_BASE=/ora10 export ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1/ export PATH=$ORACLE_HOME/bin:$P

③ 如何在AIX系統下編譯c或c++源文件,具體說明一下。謝謝各位高手。

如果你有myprogram.cpp文件,那麼使用xlC myprogram.cpp 就可以編譯了,默認生成輸出文件名為a.out,
如果要指定輸出文件,可以使用xlC myprogram.cpp -o myprogram,這樣就可以生成名字為myprogram的文件

④ AIX 6.1環境安裝的xlc 9.0版本編譯器但是不能編譯,求大神指教越詳細越好~

從你的這個補丁文件名就可以看出,是先用tar歸檔後再壓縮的,需要使用的時候反向操作即可。

uncompress vacpp.90.aix61.oct2007.ptf.tar.Z

tar xvf vacpp.90.aix61.oct2007.ptf.tar

然後在安裝此文件

⑤ 怎麼確認AIX C/C++ compiler XL C的license是否完成版

使用IBM CICS Transaction Server需要使用AIX XLC C/C++編譯器編譯C語言和C++的應用程序,。AIX上的XLC不是免費的編譯器軟體,需要額外購買license。如果沒有購買license,XLC只能使用60天,過期了就不能編譯。怎麼確定在伺服器上安裝XLC編譯器是完整版還是試用版?
lslpp -l | grep 「vac*」 或者 lslpp -l | grep -i vac
vac.lic 10.1.0.0 COMMITTED XL C for AIX LicenceFiles
vac.licAgreement 10.1.0.0 COMMITTED IBM XL C ElectronicLicense
vacpp.lic 10.1.0.0 COMMITTED IBM XL C/C++ LicenceFiles
vacpp.licAgreement 10.1.0.0 COMMITTED IBM XL C++ ElectronicLicense
查到有以上的fileset就證明你的XLC編譯器為完整版。如果沒有,請先卸載XLC編譯器,再重新安裝完整版的XLC編譯器。

⑥ 關於AIX的疑問

AIX 全名為(Advanced Interactive Executive),它是IBM 公司的UNIX操作系統,整個系統的設計從網路、主機硬體系統,到操作系統完全遵守開放系統的原則。
下面對AIX 作以介紹。
RS/6000 採用IBM 的UNIX操作系統-AIX作為其操作系統。這是一個目前操作系統界最成功,應用領域最廣,最開放的第二代的UNIX系統。它特別適合於做關鍵數據處理(CRITICAL)。
AIX 包含了許多IBM 大型機傳統受歡迎的特徵,如系統完整性,系統可管理性和系統可用性。
在 AIX 操作系統上,有許多的資料庫和開發工具,用戶除了選用已有的應用軟體外,還可以根據各自的需要進行開發。
此外,在AIX 之上,有一組功能強,使用方便的系統管理工具。對於異種平台互存,互操作有很成熟的解決方案。
由於該 UNIX 的先進的內核技術和最好的開放性,因此,雖然RS/6000從宣布到今天只有短短的5 年多的時間,它已在各行各業有了廣泛的運用,並在1993和1994年連續二年在MIDRANGE商用 UNIX 領域處於第一位。
RISC SYSTEM/6000的操作系統是AIX ,它是性能卓越的、開放的UNIX,匯集了多年來計算機界在UNIX上的研究成果,以IBM 在計算機體系結構、操作系統方面40多年極其豐富的經驗。最大限度的使用RISC技術,安裝了象AIX 這樣的具備工業界實力的UNIX操作系統。
它既可連接SAA 體系結構,又能與非IBM 系統的網路相連,因此,可以和多數專業銀行現有的系統實現互連,這對今後業務系統拓展將帶來極大的靈活性,並降低投資。
AIX 遵循一系列的國際標准:
* IEEE POSIX1004.1-1990
* X/OPEN 移植指南ISSUE3的基本級(XPG3)
* AES/OS REVISION A (OSF/1 LEVEL 2 資格)
* FIPS 151-1
* AIX的編譯器: XLC、C++(可選)、FORTRAN(可選)、PASCAL(可選)、COBOL(可選)
* ADA 的編譯器已達到XPG3「成員」級的認可。
* AIX 支持多用戶、多任務。
AIX有一些其它特性包括:
AIX 提供了3 種SHELL :SYSTEM V的KORN、BOURNE SHELL和4.3BSDC SHELL作為可選擇的UNIX系統界面;
安全設施滿足TCB (Trusted Computing Base)的C2級;實時處理能力,這對於「面向交易」的應用至關重要(如零售業和銀行等),它使RS/6000 獲得極高的響應和吞吐量;
虛擬存儲管理,當需要時,可將一些不常用的模塊轉送至外存,提高內存的可利用性。
先進的文件系統,使得系統管理更加有效,並提高了數據可靠性以及完整性。
能兼容DOS 應用程序和數據。
InfoExplorer,快速信息超文本索引系統- 不僅包括文字,而且對包含聲音、圖像的索引系統,這是個聯機的文件介面。包括全部的超文本的索引和查找,以及面向任務和坐標的多重導引和索引系統。這個文字及圖形索引系統以一個靈活的、基於任務的方式去使用詳細資料及培訓資料。
高級系統管理工具(SMIT,System Management Interface Tool)。提供一級菜單驅動程序,諸如完成軟體的安裝與設置、設備的設置及管理、問題的測定、存貯管理等。可以自動地進行I/O 設備設置,ASCII 終端也可充當系統控制台。在LAN 上可以進行遠程系統的安裝。

性能特點
AIX 5L 是AIX的當前使用版本,它支持IBM POWER 和Intel 64位(IA-64)平台。「L」 指Linux affinity
虛擬伺服器
通過在AIX 5L V5.2中引入動態邏輯分區(DLPAR),IBM為基於POWER4的p系列系統提供了高級的靈活性和可擴展性功能。
LPAR功能使得在一個單一p系列伺服器上運行AIX 5L和Linux的多個獨立操作系統映像成為可能。邏輯分區不需要與系統的組建模塊(資源集合)的物理邊界相一致。LPAR允許客戶以更小的粒度從整個可用資源池中選擇組件,從而能夠增加運行的靈活性。一個p系列分區所要求的最少資源包括一個處理器、256MB內存以及一個I/O適配器。
利用DLPAR,客戶可以"在一個伺服器的內部創建多個虛擬伺服器",並能夠從活動分區中動態地添加和刪除處理器、物理內存和I/O插槽-每個分區都與其它分區相隔離,而且每個分區都運行自己的AIX 5L V5.2操作系統;添加和刪除操作都是在分區環境的內部進行,而且不要求重新執行系統引導。客戶可以將系統資源分配給應用程序最需要的地方,在根據不斷變化的系統優先順序和資源需求進行調整的同時,能夠將多個分區上的負載整合到一個單一伺服器上。此外,客戶在完成這些工作的同時,能夠將運行、服務和支持水平保持在所要求的級別上。
運行效率和容量規劃
為提供更高的靈活性、可擴展性和可用性,AIX 5L V5.2在p650, p670和p690系統上推出了動態隨需應變容量升級(CUoD)功能。
CUoD允許客戶在進行系統安裝時安裝比初始需要數量更多的處理器,保持這些處理器(處於休眠狀態)直至業務的增長要求將其激活。CUoD選項將為系統管理員提供一個用於激活更多處理器的加密密鑰,可以在不中斷系統運行的情況下將新激活的處理器動態分配給各個分區。
CUoD提高了系統可用性。當一個處理器的出錯頻率到達一個錯誤閥值(盡管發生這種情況的可能性很小),AIX 5L V5.2將以透明的方式激活一個可用的CUoD處理器並使用它來替換故障處理器-直至客戶准備好修復計劃為止。此外,即使是單處理器分區也可以支持這一被稱為動態處理器備用(Dynamic Processor Sparing)的功能,這一功能允許系統在保持處理能力不變的情況下繼續運行,能夠保證系統的性能和可用性不會受到影響。
集群管理
為實現快速同步和協調響應,集群環境要求節點之間能夠進行全面的協作。AIX 5L使用基於AIX 5L的Linux軟體和IBM集群系統管理器(CSM)支持和優化集群伺服器的管理。CSM為指定p系列和IBM eServer x系列伺服器的安裝、配置、維護和更新提供了一個單一的控制點。基於AIX 5L的CSM以安裝選項和單獨許可產品的形式,包括在AIX 5L V5.2基本安裝介質之中。
高可靠性
利用自身的軟體,HACMP可以實現 雙機切換,確保高穩定性的實現。
Linux親和性
AIX 5L與Linux之間的親和性可以幫助以速度更快、成本更低的方式實現跨AIX和Linux平台的多平台集成解決方案。對於很多在Linux上開發或為Linux開發的應用,只需對源代碼進行一次簡單的重編譯,它們就可以在AIX 5L上運行。IBM免費為客戶提供一個用於Linux應用的AIX工具箱,該工具箱由一組多個Linux版本中常見的開放源代碼和GNU軟體組成。因為這些應用運行在AIX上,所以公司可以將Linux的靈活性與AIX的高級功能結合在一起-這些高級功能包括先進的負載管理、完善的系統管理工具以及可擴展性和安全性功能。
安全性
通過C2級認證的AIX 5L提供並全面使用了強大的行業標准安全技術和目錄技術。AIX 5L V5.2包括和擴展了這些技術,它提供了對可拔插身份驗證模塊(PAM)、基於用戶的PKI證書、企業身份映射(EIM)、BIND V9、SNMP V3、移動IPv6、無限訪問協議(WAP)v1.1、OpenSSH v3.4的集成支持,並支持新的基於AES(Rijndael)、SEAL、Mars、Twofish和其它演算法的加密解密庫。此外,AIX 5L V5.2繼續支持IBM網路身份驗證伺服器(NAS)、IBM目錄伺服器v4.1和ICSA認證IPsec/VPN安全組網功能。AIX 5L V5.2提供的Java安全技術包括JAAS、JCE/JCE、JSSE、JGSS和J-PKI。

⑦ 新手入門:AIX下如何用命令行編譯並執行一個C程序GCC和CC的區別是什麼

謝謝! 明天我去試一下。另外,在AIX下我輸入:gcc -v 想查看GCC版本號,提示GCC不存在,但是輸入:cc -v 則提示IBM XLC的版本信息,不知道這個是什麼原因 ?

⑧ AIX系統中xlc和XLC命令怎麼用示範一下,比如Hello.cpp怎麼編譯和執行

BITS=32
INCLDIR=../incl
CC=xlC
CCFLAGS=-qstaticinline -q${BITS} -c -I$(INCLDIR)
$(CC) $(CCFLAGS) hello.cpp

⑨ AIX系統下,採用xlC_r編譯、鏈接多個動態庫,不同的動態庫有同名的類,導致程序異常退出,如何解決

用域操作來區分同名類, 使用的時候指明域名就可以了

比如這樣: 你把其中一個同名類用域名來操作,另一個用全局域操作,當然,你也可以都採用命名空間來處理.

m.cpp:#include <stdio.h>
m.cpp:namespace james
m.cpp:{
m.cpp: #include "james.h"
m.cpp:}
m.cpp:class AA
m.cpp:{
m.cpp:public:
m.cpp: AA() { printf("A() %s\n", __FILE__); }
m.cpp: ~AA() { printf("~A()\n"); }
m.cpp:};
m.cpp://using namespace james; // 這句如果放開就會命名沖突, 你可以試試,如果要方便使用,就是兩個類用兩個不同的命名空間,然後在某個文件中如果僅僅用到其中一個,那麼你可以用using 關鍵字指定其中一個, 就和你原來的使用一樣了.
m.cpp:int main()
m.cpp:{
m.cpp: james::AA o;
m.cpp: AA o2;
m.cpp:}
james.h:#include <stdio.h>
james.h:
james.h:class AA
james.h:{
james.h:public:
james.h: AA() { printf("A() %s\n", __FILE__); }
james.h: ~AA() { printf("~A()\n"); }
james.h:};
Makefile:
Makefile:all: m.cpp james.h
Makefile: g++ $^

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:525
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:24
linux485 發布:2025-07-05 14:38:28 瀏覽:304
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:754
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:431
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:698
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:240
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:685
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:282
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:833