aixgcc編譯
Ⅰ 請教:一般的SOCKET在AIX中如何編譯
開源的gcc自然可以算是最佳選擇。在64位平台的AIX中,如果選擇運用 gcc來編譯perl源代碼,默認情況下是編譯成32位的版本。這樣在編譯DBD::Oracle的時候也須要選擇正確的32位庫,否則不能編譯成功。
Ⅱ 怎樣設置gcc編譯出程序的struct member align
為了解決Unix自定義結構在GCC優化編譯中對齊問題,一般解決辦法是用如下宏封裝
自定義結構
#pragma pack(1)
struct my_arphdr
{
};
#pragma pack()
如果是SPARC/Solaris,還可以這樣
struct my_arphdr
{
} __attribute__ ((packed));
兩種辦法其實都可以用在Unix系統/GCC編譯器中。
D: mbuf@smth
關於結構中位元組對齊問題,相應編譯器選項為
GCC/G++ : -fpack-struct
Sun Workshop cc/CC: -misalign
最好不這樣做,會大大降低程序效率,特別在某些架構中。應該嘗試用位操作來處理。
D: Unknown@smth
GCC可以這么解決
#ifdef __GCC__
#define PACKED __attribute__((__packed__))
#else
#define PACKED
#endif
struct msg
{
u_int16_t PACKED first;
...
};
還是 VC 簡單,#include <pshpack1.h> 就搞定了
A: gfh_nuaa
DEC : #pragma pack(1)
SUN : #pragma pack(1)
AIX : 編譯時 -q align=packed
HP-UX : #pragma pack 1
D: Joe Durusau
在 Visual C++ 中,使用 "-ZP1" 就可以讓編譯器對自定義結構進行單位元組對齊,實
際就是取消了對齊優化。
A: [email protected] 2001-12-20 13:09
1) 結構內部成員的pack
struct foo
{
char a;
int b __attribute__ ((packed));
};
2) 整個結構的pack
struct foo
{
char a;
int b;
}__attribute__ ((packed));
3) 文件范圍的pack
#pragma pack(1)
struct foo
{
char a;
int b;
};
... ...
4) 編譯選項的pack
-fpack-struct
但這是最危險的做法,因為這樣做可能會使庫函數和你的程序對結構內成員的偏移理
解不一致。
Ⅲ AIX下gcc編譯器怎麼使用動態連接庫
鏈接靜態庫其實從某種意義上來說也是一種粘貼復制,只不過它操作的對象是目標代碼而不是源碼而已。因為靜態庫被鏈接後庫就直接嵌入可執行文件中了,這樣就帶來了兩個問題。
首先就是系統空間被浪費了。這是顯而易見的,想像一下,如果多個程序鏈接了同一個庫,則每一個生成的可執行文件就都會有一個庫的副本,必然會浪費系統空間。
再者,人非聖賢,即使是精心調試的庫,也難免會有錯。一旦發現了庫中有bug,挽救起來就比較麻煩了。必須一一把鏈接該庫的程序找出來,然後重新編譯。
而動態庫的出現正彌補了靜態庫的以上弊端。因為動態庫是在程序運行時被鏈接的,所以磁碟上只須保留一份副本,因此節約了磁碟空間。如果發現了bug或要升級也很簡單,只要用新的庫把原來的替換掉就行了。
Ⅳ 在AIX上編個gcc怎麼就那麼難
AIX上使用gcc和g++的一個編譯問題的解決 - 人丑就要多讀書,人窮...
Ⅳ 我在AIX6.1上安裝的是gcc4.2.0的版本,在編譯一段程序的時候報g++: Internal error: Segmentation fault
我給個建議,如果寫個c++的helloworld.cpp編譯不了,那就估計是編譯器問題,否則就是代碼問題。編譯器問題無非是刪除,重新安裝文檔安裝。
Ⅵ AIX里怎麼安裝CC編譯器
你要安裝的是IBM的xlc嗎?還是gcc編譯器?
如果是xlc,首先在操作系統中安裝依賴的文件集,比如bos.adt等等。
然後使用installp命令或者smit installp快捷菜單安裝xlc,如果依賴的文件集沒有安裝,安裝信息會有提示,並報錯。
如果是gcc編譯器,請按照gcc的說明文檔編譯安裝。
Ⅶ 新手入門:AIX下如何用命令行編譯並執行一個C程序GCC和CC的區別是什麼
謝謝! 明天我去試一下。另外,在AIX下我輸入:gcc -v 想查看GCC版本號,提示GCC不存在,但是輸入:cc -v 則提示IBM XLC的版本信息,不知道這個是什麼原因 ?
Ⅷ aix系統編譯make
換gmake試一下
gmake是GNU Make的縮寫。 Linux系統環境下的make就是GNU Make,之所以有gmake,是因為在別的平台上,make一般被佔用,GNU make只好叫gmake了。 比如在安裝二進制文件進行編譯時要使用make命令,但如果在Solaris或其他非GNU系統中運行,必須使用GNU make,而不是使用系統自帶的make版本,這時要用gmake代替make進行編譯
Ⅸ 有哪位大哥在aix上用過tuxedo啊,最好是用gcc編譯器
一般建議使用tuxedo的buildserver命令編譯生成可執行文件,而不是直接cc/gcc,如果有特殊考慮必須直接使用cc/gcc,需使用-I、-L、-l參數後跟相應選項指明Tuxedo頭文件所在目錄、庫文件所在目錄、庫文件;使用buildserver命令編譯時,如果希望調用gcc而不是預設的cc,可先設置環境變數CC=gcc
Ⅹ 如何在aix上安裝gcc,g++編譯器的相關推薦
AIX 上的C編譯器基本都是收費的。